Docker 基本概念
镜像/容器/仓库
Docker特点
持续交付和部署
更轻松的维护和扩展
一致的运行环境
快速的启动时间
高效的利用系统资源
容器不应该向其存储层内写入任何数据,容器存储层要保持无状态化。
所有的文件写入操作,都应该使用数据卷Volume,或者绑定宿主目录,在这些位置
的读写会跳过容器存储层,直接对宿主发生读写,其性能和稳定性更高
数据卷生存周期独立与容器,容器消亡,数据卷不会消亡,数据不会丢失
Docker与加速配置
CentOS 安装 Docker CE
1、先卸载之前的老版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
2、安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
3、添加源
yum-config-manager \
--add-repo \
https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
4、安装docker
yum makecache fast
yum install docker-ce
5、启动docker
systemctl start docker
systemctl enable docker 开机自启
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://ghcr.geekery.cn",
"https://hub.geekery.cn",
"https://docker.m.daocloud.io",
"https://docker.rainbond.cc",
"https://docker.1panel.live"
]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
# docker info 查看docker信息
[root@localhost docker]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
bc0965b23a04: Pull complete
650ee30bbe5e: Pull complete
8cc1569e58f5: Pull complete
362f35df001b: Pull complete
13e320bf29cd: Pull complete
7b50399908e1: Pull complete
57b64962dd94: Pull complete
Digest: sha256:fb197595ebe76b9c0c14ab68159fd3c08bd067ec62300583543f0ebda353b5be
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
[root@localhost docker]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 66f8bdd3810c 6 days ago 192MB
hello-world latest d2c94e258dcb 19 months ago 13.3kB
获取镜像
docker pull [选项] [Docker Registry地址[:端口号]/] 仓库名[:标签]
# docker pull nginx:1.14.2
# docker run -it --rm centos /bin/bash
--rm 表示容器运行退出后自动删除
指定 --rm 参数启动容器时通常不使用 -d 参数
启动一个centos容器,宿主机的/test目录挂载到容器的/soft目录,可通过以下方式指定
# docker run -it -v /test:/soft centos /bin/bash
-v 参数挂载目录,将宿主机的文件夹挂载到容器中
查看某个镜像信息
[root@localhost docker]# docker image ls nginx
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 66f8bdd3810c 6 days ago 192MB
# docker image ls -f since=nginx:latest
# docker image ls -q
删除某一个镜像
# docker image rm 镜像id/镜像名称
https://blog.csdn.net/y1035793317/article/details/121537968
删除所有镜像
# docker image rm $(docker image ls -q)
Docker容器的使用
1、启动容器的2种方式
一种是基于镜像新建一个容器并启动
另外一个是将在终止状态 的容器重新启动
新建一个容器并启动,使用命令 docker run
# docker run centos:7.6.1810 /bin/echo 'hello world' (运行容器后马上退出)
启动一个bash终端,允许用户进行交互
# docker run -it centos:7.6.1810 /bin/bash
-t 分配一个伪终端 并绑定到容器的标准输入上
-i 则让容器标准输入保持打开,即为交互模式
启动容器
# docker container start 容器id
exec 方式进入容器
# docker exec -it 容器id /bin/bash
停止容器
# docker container stop 容器id
重启容器
# docker container restart 容器id
进入容器
# docker attach 容器id
# docker run centos:7.6 /bin/sh -c "echo hello world"
导出容器 (一般在容器迁移时使用)
docker export 容器id > 导出的文件
# docker export 容器id > centos_7.6.tar
导入容器变成一个镜像
# cat centos_7.6.tar | docker import mycentos:7.6
容器的删除
# docker container rm 容器id (只能删除停止的容器)
# docker container rm -f 容器id (强制删除正在运行中的容器)
删除所有容器 (已经终止的容器)
# docker container prune
Docker 仓库
1、Docker Hub
# docker search 镜像名
将自己的镜像推送到Docker Hub
# docker tag centos:6.10 username/centos:6.10
(username 为docker账号用户名)
# docker image ls
# docker push username/centos:6.10
# docker search username
2、私有仓库
docker-registry 是官方提供的工具 构建私有镜像仓库
# docker run -d -p 5000:5000 --restart=always --name registry registry
-p 5000:5000 宿主机端口:容器端口
--restart=always 开机自启
--name registry 自己起的镜像名
registry 经项目
增加 标记
# docker tag centos:7.6.1810 127.0.0.1:5000/centos:7.6.1810
将本地镜像推送到自己的私有仓库
# docker push 127.0.0.1:5000/centos:7.6.1810