作者:京东科技 林中
Docker是一个开放的平台,用于开发、发布和运行应用程序。Docker分离了应用程序和运行应用的基础设施,从而实现了软件的快速交付。利用docker提供的一系列功能,包括构建、发布、测试和部署,可以帮助开发人员将最新版本代码应用到生产环境中。
Docker可以安装在多个平台中,包括Mac、Windows和Linux。不过,生产环境还是推荐在Linux上运行,以下以主流的Linux操作系统(CentOS和ubuntu)为例,说明Docker运行环境的安装过程。
一、安装
1、CentOS
1.1、检查操作系统版本
Docker官方建议使用最新的稳定版本CentOS 9(stream)。不过,从docker-ce的发布软件包来看,仍然支持CentOS7和CentOS8。详细情况可参考清华大学的镜像站,https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/。
1.2、卸载老版本的docker或docker-engine
如果你之前安装过 docker,使用以下命令删除旧的版本和依赖软件。
sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
需要说明的是:删除旧版本docker,并不会删除使用中的镜像、容器实例、存储卷和网络配置,这些内容仍然保存在/var/lib/docker目录下。
1.3、安装docker运行环境
安装docker engine的方法有多种,
1)docker官方提供的yum安装源仓库(repositories),可以方便的实现安装和更新任务。 这也是官方推荐的方式。
2)下载docker的RPM软件包,手工进行安装和后续的更新。这个方式一般是在企业内网环境中,无法访问internet的情况下采用。
3)使用自动化的安装脚本https://get.docker.com/,自动完成安装。适合于开发和测试环境。缺点是,因为国家网络安全管理的限制,如何获取这个脚本?本身就是一个问题。建议初学者,还是应该掌握软件包管理的方法(yum,或者rpm),不要过度依赖于安装脚本。
需要注意的是:安装脚本中默认使用了国外的安装源,文件的下载速度较低。脚本中允许指定国内的两个安装源, --mirror=Aliyun(或者AzurechinaCloud),可以加快部署。
以下使用方式1(docker官方提供的yum安装源仓库)进行安装:
1、安装yum仓库管理工具,下载 repo 文件,并把软件仓库地址替换为国内镜像站
sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sed -i 's+https://download.docker.com+https://mirrors.tuna.tsinghua.edu.cn/docker-ce
需要注意的是:当download.docker.com无法访问时,可以通过国内镜像站替代,比如:https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
2、安装docker engine、containerd和docker-compose
2.1 安装最新版本
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
2.2 (可选)安装指定版本
1)获取仓库中可用的版本清单
yum list docker-ce --showduplicates | sort -r docker-ce.x86_64 3:27.1.1-1.el9 docker-ce-stable docker-ce.x86_64 3:27.1.0-1.el9 docker-ce-stable <...>
说明:VERSION_STRING = 3:27.1.1-1.el9
2)安装指定的版本
sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io docker-buildx-plugin docker-compose-plugin
3)启动docker
sudo systemctl start docker
2、ubuntu
注意:防火墙限制
Docker仅兼容iptables-nft和iptables-legacy,使用nft创建的防火墙规则在docker环境下不生效。
2.1、检查操作系统版本
Docker官方建议使用的版本包括,
Ubuntu Noble 24.04 (LTS) Ubuntu Jammy 22.04 (LTS) Ubuntu Focal 20.04 (LTS)
不过,从docker-ce的发布软件包来看,仍然支持ubuntu的历史版本。详细情况可参考清华大学的镜像站,https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu/dists/。
2.2、卸载老版本的docker或docker-engine
如果你之前安装过 docker,使用以下命令删除旧的版本和依赖软件:
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
说明:删除旧版本docker,并不会删除使用中的镜像、容器实例、存储卷和网络配置,这些内容仍然保存在/var/lib/docker目录下。
2.3、安装docker运行环境
安装docker engine的方法有多种,
1)docker官方提供的apt安装源仓库(repository)
2)手工进行安装和后续的更新。
3)使用自动化的安装脚本https://get.docker.com/,适合于开发和测试环境。
以下使用方式1(docker官方提供的apt安装源仓库)进行安装:
1、首先安装依赖:
apt-get update apt-get install ca-certificates curl gnupg
2、信任 Docker 的 GPG 公钥并添加仓库:
install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu \ "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \ tee /etc/apt/sources.list.d/docker.list > /dev/null
3、最后安装
3.1 安装最新版本
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
3.2 (可选)安装指定版本
1)获取仓库中可用的版本清单
apt-cache madison docker-ce | awk '{ print $3 }'
5:27.1.1-1ubuntu.24.04noble
5:27.1.0-1ubuntu.24.04noble
...
说明:VERSION_STRING=5:27.1.1-1ubuntu.24.04noble
2)安装指定的版本
VERSION_STRING=5:27.1.1-1~ubuntu.24.04~noble sudo apt-get install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin
3)启动docker
sudo systemctl start docker
二、配置docker镜像国内加速
创建或更新文件:/etc/docker/daemon.json,内容如下:
{ "registry-mirrors": [ "https://docker.m.daocloud.io", "https://docker.nju.edu.cn", "https://dockerproxy.com", "https://docker.udayun.com", "https://noohub.ru", "https://huecker.io", "https://dockerhub.timeweb.cloud" ] }
配置完成后,需要重新启动docker
sudo systemctl restart docker
三、运行hello-world镜像,验证安装结果
sudo docker run hello-world
说明:以上命令执行过程中,会首先拉取hello-world镜像,然后运行容器实例,当看到控制台中显示包含“Hello from Docker!”的提示信息时,表示安装成功。