1. 环境准备与系统更新
在CentOS 7.6上安装Docker前,确保系统环境符合要求是首要任务。我建议先检查系统版本,因为Docker对CentOS 7.x系列的支持最为稳定。通过以下命令可以确认系统信息:
bash复制cat /etc/os-release
这个命令会输出类似如下的信息:
code复制NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
确认系统版本后,强烈建议先更新所有系统包到最新版本。这个步骤经常被新手忽略,但非常重要——过时的系统包可能导致依赖冲突或安全漏洞。执行:
bash复制sudo yum update -y
注意:在生产环境中执行系统更新前,建议先评估更新可能带来的影响,特别是对正在运行的服务。可以先用
yum check-update查看可用的更新列表。
更新完成后,需要安装一组基础依赖包,这些是Docker正常运行的前提:
bash复制sudo yum install -y yum-utils device-mapper-persistent-data lvm2
这些包的作用分别是:
yum-utils:提供yum-config-manager等实用工具device-mapper-persistent-data和lvm2:Docker使用的存储驱动依赖
2. Docker仓库配置
2.1 添加Docker CE仓库
官方Docker仓库在国外,国内用户直接访问可能会遇到速度慢或连接不稳定的问题。我强烈推荐使用国内镜像源,比如阿里云的Docker CE镜像:
bash复制sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
这个命令会在/etc/yum.repos.d/目录下创建一个新的仓库配置文件。添加成功后,建议立即更新本地yum缓存:
bash复制sudo yum makecache fast
经验分享:如果后续安装过程中遇到"package not found"之类的错误,很可能是仓库配置有问题。可以检查
/etc/yum.repos.d/docker-ce.repo文件是否存在且内容完整。
2.2 可选:安装特定版本
默认情况下,yum会安装最新稳定版的Docker。但在生产环境中,我们可能需要安装特定版本以确保兼容性。查看可用版本列表:
bash复制yum list docker-ce --showduplicates | sort -r
假设我们需要安装24.0.6版本:
bash复制sudo yum install -y docker-ce-24.0.6 docker-ce-cli-24.0.6 containerd.io
3. Docker安装与验证
3.1 安装Docker CE
执行以下命令安装Docker社区版及其相关组件:
bash复制sudo yum install -y docker-ce docker-ce-cli containerd.io
安装完成后,系统会创建docker用户组,但默认情况下普通用户无法执行docker命令。将当前用户加入docker组可以避免每次都要使用sudo:
bash复制sudo usermod -aG docker $USER
重要提示:修改用户组后需要重新登录才能生效。这是一个常见的安全隐患点——在生产环境中,应该谨慎考虑是否赋予普通用户docker权限。
3.2 启动与验证Docker服务
启动Docker服务并设置开机自启:
bash复制sudo systemctl start docker
sudo systemctl enable docker
验证Docker是否正常运行:
bash复制sudo docker run hello-world
这个测试镜像会输出"Hello from Docker!"等信息,并解释Docker的基本工作流程。如果看到这些信息,说明安装成功。
4. 配置优化
4.1 国内镜像加速
为了提升镜像拉取速度,建议配置国内镜像仓库。创建或修改/etc/docker/daemon.json:
bash复制sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://docker.nju.edu.cn"
]
}
EOF
然后重启Docker使配置生效:
bash复制sudo systemctl daemon-reload
sudo systemctl restart docker
4.2 存储驱动选择
CentOS 7默认使用devicemapper存储驱动,但在较新版本中推荐使用overlay2。检查当前存储驱动:
bash复制docker info | grep "Storage Driver"
如果需要修改存储驱动,可以在daemon.json中添加:
json复制{
"storage-driver": "overlay2"
}
5. 日常运维命令
5.1 容器管理基础
| 命令 | 描述 | 常用选项 |
|---|---|---|
docker ps |
列出运行中的容器 | -a 显示所有容器 |
docker run |
创建并运行容器 | -d 后台运行, -p 端口映射 |
docker stop |
停止容器 | 容器ID或名称 |
docker rm |
删除容器 | -f 强制删除运行中的容器 |
docker logs |
查看容器日志 | -f 实时跟踪 |
5.2 镜像管理
bash复制# 搜索镜像
docker search nginx
# 拉取镜像
docker pull nginx:1.21
# 列出本地镜像
docker images
# 删除镜像
docker rmi nginx:1.21
6. 常见问题排查
6.1 依赖冲突
如果遇到类似"package docker-ce-xxx requires containerd.io >= 1.6.4"的错误,说明containerd.io版本不满足要求。可以手动安装指定版本:
bash复制sudo yum install -y https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/containerd/containerd.io-1.6.21-3.1.el7.x86_64.rpm
6.2 服务启动失败
如果systemctl start docker失败,检查服务状态获取详细信息:
bash复制sudo systemctl status docker -l
常见原因包括:
- 存储驱动配置错误
- 端口冲突(特别是如果已经安装了其他容器运行时)
- SELinux策略限制
6.3 网络问题
当遇到镜像拉取超时时,除了配置镜像加速器,还可以尝试:
bash复制# 检查DNS配置
cat /etc/resolv.conf
# 临时修改DNS
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"dns": ["8.8.8.8", "114.114.114.114"]
}
EOF
7. 安全建议
- 定期更新:Docker及其组件应该保持最新,以修复已知漏洞:
bash复制sudo yum update docker-ce
-
权限控制:避免直接使用root用户操作Docker,而是通过docker用户组管理权限。
-
资源限制:为容器设置适当的资源限制,防止单个容器占用所有系统资源:
bash复制docker run -it --cpus 1 --memory 512m ubuntu
- 日志管理:配置日志轮转,防止容器日志占满磁盘空间。在
daemon.json中添加:
json复制{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
在实际运维中,我发现很多问题都源于基础配置不当。特别是在企业环境中,建议在安装完成后立即进行安全加固,包括配置防火墙规则、启用日志审计等。对于生产系统,考虑使用专门的容器安全工具进行漏洞扫描和运行时保护。