1. Docker CE 安装前的系统准备
在开始安装 Docker CE 之前,我们需要做好系统环境的准备工作。Docker 作为容器化技术的代表,对操作系统有一定的要求。Ubuntu 和 CentOS 作为最流行的 Linux 发行版,在安装 Docker 时有些细节需要特别注意。
1.1 系统版本要求
对于 Ubuntu 系统,官方推荐使用以下长期支持(LTS)版本:
- Ubuntu Jammy 22.04 (LTS)
- Ubuntu Focal 20.04 (LTS)
- Ubuntu Bionic 18.04 (LTS)
对于 CentOS 系统,建议使用 CentOS 7 或 CentOS 8 Stream。需要注意的是,CentOS 官方已经停止维护 CentOS 8,转而推荐使用 CentOS Stream 8。
提示:在生产环境中,建议使用 LTS 版本以获得长期稳定的支持。非 LTS 版本虽然也可以安装 Docker,但可能会遇到兼容性问题。
1.2 硬件要求
虽然 Docker 对硬件要求不高,但仍有一些基本配置建议:
- 64位处理器(x86_64或ARM架构)
- 至少2GB RAM(4GB以上更佳)
- 至少20GB可用磁盘空间
- 启用了虚拟化支持(可通过
egrep -c '(vmx|svm)' /proc/cpuinfo命令检查,输出大于0表示支持)
1.3 卸载旧版本
如果你的系统上已经安装过旧版本的 Docker,建议先彻底卸载以避免冲突:
对于 Ubuntu/Debian 系统:
bash复制sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get purge docker-ce docker-ce-cli containerd.io
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
对于 CentOS/RHEL 系统:
bash复制sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
2. Ubuntu 系统安装 Docker CE
2.1 安装系统工具
首先更新软件包索引并安装必要的工具:
bash复制sudo apt-get update
sudo apt-get install -y \
ca-certificates \
curl \
gnupg \
lsb-release
这些工具的作用分别是:
ca-certificates:用于验证HTTPS连接的证书curl:用于从网络下载文件gnupg:GNU隐私保护工具,用于验证软件包签名lsb-release:提供标准的Linux发行版信息
2.2 添加 Docker 官方 GPG 密钥
为了保证下载的 Docker 软件包是官方发布的、未被篡改的,我们需要添加 Docker 的 GPG 公钥:
bash复制sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
这里使用了阿里云镜像源替代官方源,可以显著提高国内用户的下载速度。--dearmor 选项将二进制密钥转换为ASCII格式,便于存储。
2.3 设置 Docker 软件源
接下来设置 Docker 的APT源:
bash复制echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
这个命令做了以下几件事:
- 自动检测系统架构(
dpkg --print-architecture) - 使用之前添加的GPG密钥进行验证(
signed-by) - 根据当前Ubuntu版本(
lsb_release -cs)选择对应的仓库 - 将配置写入
/etc/apt/sources.list.d/docker.list文件
2.4 安装 Docker 引擎
更新软件包索引并安装 Docker:
bash复制sudo apt-get update
sudo apt-get install -y \
docker-ce \
docker-ce-cli \
containerd.io \
docker-buildx-plugin \
docker-compose-plugin
安装的组件包括:
docker-ce:Docker社区版引擎docker-ce-cli:Docker命令行工具containerd.io:容器运行时docker-buildx-plugin:扩展构建功能docker-compose-plugin:容器编排工具
2.5 验证安装
安装完成后,可以通过以下命令验证 Docker 是否正常运行:
bash复制sudo docker run hello-world
这个命令会下载一个测试镜像并运行,如果看到"Hello from Docker!"的消息,说明安装成功。
3. CentOS 系统安装 Docker CE
3.1 安装必要工具
首先安装 yum-utils 工具包,它提供了 yum-config-manager 等实用工具:
bash复制sudo yum install -y yum-utils
3.2 添加 Docker 软件源
使用阿里云镜像源添加 Docker 仓库:
bash复制sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.3 安装 Docker 引擎
安装 Docker 及其组件:
bash复制sudo yum install -y \
docker-ce \
docker-ce-cli \
containerd.io \
docker-buildx-plugin \
docker-compose-plugin
3.4 启动 Docker 服务
在 CentOS 上,安装后需要手动启动 Docker 服务:
bash复制sudo systemctl start docker
sudo systemctl enable docker
enable 命令设置 Docker 开机自启。
4. 配置 Docker 镜像加速
4.1 为什么要配置镜像加速
Docker Hub 在国内访问速度较慢,配置镜像加速可以显著提高镜像拉取速度。国内常用的镜像加速服务包括:
- 阿里云加速器
- 中科大镜像
- 网易云镜像
- DaoCloud 镜像
4.2 配置方法
创建 Docker 配置目录和配置文件:
bash复制sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
]
}
EOF
然后重新加载配置并重启 Docker:
bash复制sudo systemctl daemon-reload
sudo systemctl restart docker
4.3 验证加速配置
可以通过以下命令查看当前配置是否生效:
bash复制docker info | grep -A 1 "Registry Mirrors"
如果看到配置的镜像地址,说明加速配置成功。
5. Docker 基本操作与验证
5.1 查看 Docker 版本信息
bash复制docker version
这个命令会显示客户端和服务端的版本信息,确认两者都正常运行。
5.2 管理 Docker 镜像
查看本地镜像列表:
bash复制docker images
搜索 Docker Hub 上的镜像:
bash复制docker search ubuntu
拉取镜像:
bash复制docker pull ubuntu:20.04
5.3 管理 Docker 容器
查看运行中的容器:
bash复制docker ps
查看所有容器(包括停止的):
bash复制docker ps -a
运行一个测试容器:
bash复制docker run -it --rm ubuntu:20.04 bash
停止容器:
bash复制docker stop <容器ID>
删除容器:
bash复制docker rm <容器ID>
6. 常见问题与解决方案
6.1 GPG 密钥错误
如果在 Ubuntu 上遇到 GPG 密钥错误,可以尝试以下解决方案:
bash复制sudo rm /etc/apt/trusted.gpg.d/docker.gpg
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys <缺失的密钥ID>
6.2 权限问题
默认情况下,运行 Docker 命令需要 sudo 权限。要将当前用户加入 docker 组以避免每次都使用 sudo:
bash复制sudo usermod -aG docker $USER
newgrp docker
注意:将用户加入 docker 组等同于赋予其 root 权限,在生产环境中需谨慎操作。
6.3 存储驱动问题
在某些系统上可能会遇到存储驱动不兼容的问题。可以检查当前存储驱动:
bash复制docker info | grep "Storage Driver"
如果需要修改存储驱动,可以编辑 /etc/docker/daemon.json 文件:
json复制{
"storage-driver": "overlay2"
}
6.4 防火墙配置
如果 Docker 容器无法访问外部网络,可能需要调整防火墙规则:
bash复制sudo firewall-cmd --permanent --zone=trusted --add-interface=docker0
sudo firewall-cmd --permanent --zone=trusted --add-port=2376/tcp
sudo firewall-cmd --reload
7. Docker 进阶配置
7.1 日志配置
默认情况下,Docker 容器日志会不断增长。可以限制日志大小:
json复制{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
7.2 数据存储位置
Docker 默认将镜像和容器存储在 /var/lib/docker。如果需要更改存储位置:
json复制{
"data-root": "/path/to/new/location"
}
7.3 资源限制
可以通过配置限制 Docker 的资源使用:
json复制{
"default-ulimits": {
"nofile": {
"Name": "nofile",
"Hard": 64000,
"Soft": 64000
}
}
}
8. 生产环境最佳实践
8.1 定期维护
- 定期清理未使用的镜像、容器和卷:
bash复制docker system prune -a
- 定期检查并更新 Docker 版本
8.2 安全建议
- 不要以 root 用户身份运行容器
- 使用非特权用户
- 限制容器资源使用
- 定期扫描镜像中的漏洞
8.3 监控与日志
- 配置集中式日志收集
- 使用 Prometheus 监控 Docker 指标
- 设置适当的告警规则
9. 卸载 Docker
如果需要卸载 Docker,可以按照以下步骤操作:
对于 Ubuntu/Debian:
bash复制sudo apt-get purge docker-ce docker-ce-cli containerd.io
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
对于 CentOS/RHEL:
bash复制sudo yum remove docker-ce docker-ce-cli containerd.io
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd