Docker生态架构及部署
Docker生态架构
Docker Containers Are Everywhere
生态架构
Docker Host
用于安装Docker daemon的主机,即为Docker Host,并且该主机中可基于容器镜像运行容器。
Docker daemon
用于管理Docker Host中运行的容器、容器镜像、容器网络等,管理由Containerd.io提供的容器。
Registry
容器镜像仓库,用于存储已生成容器运行模板的仓库,用户使用时,可直接从容器镜像仓库中下载容器镜像,即容器运行模板,就可以运行容器镜像中包含的应用了。例如:Docker Hub,也可以使用Harbor实现企业私有的容器镜像仓库。
Docker client
Docker Daemon客户端工具,用于同Docker Daemon进行通信,执行用户指令,可部署在Docker Host上,也可以部署在其它主机,能够连接到Docker Daemon即可操作。
Image
把应用运行环境及计算资源打包方式生成可再用于启动容器的不可变的基础设施的模板文件,主要用于基于其启动一个容器。
Container
由容器镜像生成,用于应用程序运行的环境,包含容器镜像中所有文件及用户后添加的文件,属于基于容器镜像生成的可读写层,这也是应用程序活跃的空间。
Docker Dashboard
仅限于MAC与Windows操作系统上安装使用。
Docker Dashboard 提供了一个简单的界面,使您能够直接从您的机器管理您的容器、应用程序和映像,而无需使用 CLI 来执行核心操作。
Docker版本
- Docker-ce Docker社区版,主要用于个人开发者测试使用,免费版本
- Docker-ee Docker企业版,主要用于为企业开发及应用部署使用,收费版本,免费试用一个月,2020年因国际政治原因曾一度限制中国企业使用。
Docker部署
安装Docker-ce版本。
使用YUM源部署
YUM源可以使用官方YUM源、清华大学开源镜像站配置YUM源,也可以使用阿里云开源镜像站提供的YUM源,建议选择使用阿里云开源镜像站提供的YUM源,原因速度快。
获取阿里云开源镜像站YUM源文件
百度搜索“阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区”,网页地址是developer.aliyun.com/mirror/
# 在docker host上使用 wget下载到/etc/yum.repos.d目录中即可。
wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 查看当前主机的yum源
yum repolist
返回值中有下面一行
!docker-ce-stable/7/x86_64 Docker CE Stable - x86_64 253
安装Docker-ce
在docker host上安装即可,本次使用YUM源中稳定版本,由于版本在不断更新,不同的时间安装版本也不相同,使用方法基本一致。
# 直接安装docker-ce,此为docker daemon,所有依赖将被yum自动安装,含docker client等。
yum -y install docker-ce
Running transaction
Installing : libcgroup-0.41-21.el7.x86_64 1/7
Installing : docker-buildx-plugin-0.11.2-1.el7.x86_64 2/7
Installing : containerd.io-1.6.22-3.1.el7.x86_64 3/7
Installing : docker-compose-plugin-2.21.0-1.el7.x86_64 4/7
Installing : 1:docker-ce-cli-24.0.6-1.el7.x86_64 5/7
Installing : docker-ce-rootless-extras-24.0.6-1.el7.x86_64 6/7
Installing : 3:docker-ce-24.0.6-1.el7.x86_64 7/7
Verifying : docker-compose-plugin-2.21.0-1.el7.x86_64 1/7
Verifying : 1:docker-ce-cli-24.0.6-1.el7.x86_64 2/7
Verifying : docker-ce-rootless-extras-24.0.6-1.el7.x86_64 3/7
Verifying : 3:docker-ce-24.0.6-1.el7.x86_64 4/7
Verifying : containerd.io-1.6.22-3.1.el7.x86_64 5/7
Verifying : docker-buildx-plugin-0.11.2-1.el7.x86_64 6/7
Verifying : libcgroup-0.41-21.el7.x86_64 7/7
Installed:
docker-ce.x86_64 3:24.0.6-1.el7
# containerd.io 是docker daemon与OS API的接口程序,也可以为非Docker容器管理工具提供容器化
# docker-ce-cli 是docker client
配置Docker Daemon启动文件
由于Docker使用过程中会对Centos操作系统中的Iptables防火墙中的FORWARD链默认规划产生影响及需要让Docker Daemon接受用户自定义的daemon.json文件,需要要按使用者要求的方式修改。
vim /usr/lib/systemd/system/docker.service
# 修改数据目录
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
# 将上面的修改为下面的
ExecStart=/usr/bin/dockerd --data-root /data/docker -H fd:// --containerd=/run/containerd/containerd.sock
启动Docker服务并查看已安装版本
# 重启加载daemon文件
systemctl daemon-reload
# 启动docker daemon
systemctl start docker
# 设置开机自启动
systemctl enable docker
# 查看已安装docker软件版本
docker version
Client: Docker Engine - Community
Version: 24.0.6
...
Server: Docker Engine - Community
Engine:
Version: 24.0.6
...
使用二进制文件部署
官方不建议此种部署方式,主因为不能自动更新,在条件有限制的情况下使用。
二进制安装参考网址:docs.docker.com/engine/inst…
找到 install-static-binaries,然后在 download.docker.com/linux/stati… 里下载对应的包,这里下载的是 download.docker.com/linux/stati…
# 获取二进制文件
wget https://download.docker.com/linux/static/stable/x86_64/docker-24.0.6.tgz
tar xf docker-24.0.6.tgz
ls docker
containerd containerd-shim-runc-v2 ctr docker dockerd docker-init docker-proxy runc
cd docker
# 运行Daemon,会有大量的信息输出,停止后,直接回车即可使用。
dockerd &
# 查看版本
docker version
Client: Docker Engine - Community
Version: 24.0.6
...
Server: Docker Engine - Community
Engine:
Version: 24.0.6
...
如果您需要使用其他选项启动守护程序,请相应地修改上述命令或创建并编辑文件
/etc/docker/daemon.json以添加自定义配置选项。
Docker卸载
# 停止和删除所有docker容器
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
# 删除所有docker镜像
docker rmi $(docker images -q)
# 停止docker
systemctl stop docker
# 移除docker
yum remove docker-ce
# 移除docker相关的软件
# 先查看
yum list installed | grep docker
containerd.io.x86_64 1.6.22-3.1.el7 @docker-ce-stable
docker-buildx-plugin.x86_64 0.11.2-1.el7 @docker-ce-stable
...
# 再删除,删除上面查询到的所有docker相关的软件
yum remove containerd.io.x86_64 docker-buildx-plugin.x86_64
# 删除docker相关的文件夹
# 先查看,再删除
find / -name docker