ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

CentOS 7.9下Docker安装与配置全攻略

CentOS 7.9下Docker安装与配置全攻略

1. CentOS 7.9系统下Docker安装全指南

作为Linux系统管理员,我经常需要在CentOS服务器上部署Docker环境。虽然现在CentOS 8/9和RHEL 9已经普及,但CentOS 7.9仍然是企业生产环境中使用最广泛的稳定版本。本文将分享我在CentOS 7.9上安装Docker Engine 20.10+和Docker Compose 2.0+的完整流程,包含国内镜像加速配置和常见问题解决方案。

注意:本文所有操作均基于最小化安装的CentOS 7.9.2009,内核版本要求3.10+。实际操作前建议先执行yum update更新系统。

1.1 环境准备与依赖检查

在开始安装前,我们需要确认系统环境是否符合Docker运行要求:

# 查看系统版本 cat /etc/redhat-release # 查看内核版本 uname -r # 检查Device Mapper存储驱动 ls -l /sys/class/misc/device-mapper

如果内核版本低于3.10,需要先升级内核:

sudo yum install -y kernel-lt sudo grub2-set-default 0 sudo reboot

对于物理服务器,还需要在BIOS中开启虚拟化支持(VT-x/AMD-V)。云服务器通常已默认开启,可通过以下命令验证:

grep -E --color 'vmx|svm' /proc/cpuinfo

1.2 卸载旧版Docker(如有)

如果系统存在旧版Docker(如docker/docker-engine),需要先彻底卸载:

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. Docker Engine安装与配置

2.1 设置Docker仓库

推荐使用官方仓库安装,确保获取最新稳定版本:

sudo yum install -y yum-utils sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo

国内用户建议替换为中科大镜像源加速:

sudo sed -i 's@download.docker.com@mirrors.ustc.edu.cn/docker-ce@g' /etc/yum.repos.d/docker-ce.repo

2.2 安装Docker Engine 20.10+

安装指定版本(推荐20.10.23):

sudo yum install -y docker-ce-20.10.23 docker-ce-cli-20.10.23 containerd.io

或者安装最新稳定版:

sudo yum install -y docker-ce docker-ce-cli containerd.io

2.3 配置Docker守护进程

创建daemon.json配置文件:

sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2", "registry-mirrors": [ "https://hub-mirror.c.163.com", "https://mirror.baidubce.com" ] } EOF

关键参数说明:

  • native.cgroupdriver: 与systemd集成
  • overlay2: 推荐存储驱动
  • registry-mirrors: 国内镜像加速

2.4 启动Docker服务

sudo systemctl enable docker sudo systemctl start docker

验证安装:

sudo docker version sudo docker run hello-world

3. Docker Compose 2.0+安装

3.1 官方二进制安装

下载最新版Docker Compose(当前为2.20.0):

sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

国内用户可使用代理下载:

sudo curl -L "https://get.daocloud.io/docker/compose/releases/download/v2.20.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

设置执行权限:

sudo chmod +x /usr/local/bin/docker-compose

验证安装:

docker-compose version

3.2 使用yum安装(替代方案)

对于偏好包管理的用户:

sudo yum install -y docker-compose-plugin

使用方式略有不同:

docker compose version

4. 权限管理与用户组配置

4.1 非root用户操作Docker

将当前用户加入docker组:

sudo usermod -aG docker $USER newgrp docker

验证非root权限:

docker ps

4.2 解决权限错误

当出现"Got permission denied"错误时,检查:

# 查看docker.sock权限 ls -l /var/run/docker.sock # 确认用户组 groups $USER

临时解决方案(不推荐生产环境):

sudo chmod 666 /var/run/docker.sock

5. 存储与网络优化配置

5.1 修改Docker数据目录

默认存储路径为/var/lib/docker,如需更改:

sudo mkdir -p /data/docker sudo tee -a /etc/docker/daemon.json <<-'EOF' { "data-root": "/data/docker" } EOF sudo systemctl restart docker

5.2 网络性能调优

针对生产环境的网络配置建议:

{ "default-address-pools": [ { "base": "192.168.0.0/16", "size": 24 } ], "mtu": 1500, "dns": ["8.8.8.8", "114.114.114.114"] }

6. 常见问题排查

6.1 启动失败:virtualization support not detected

错误表现:

Docker Desktop failed to start because virtualization support wasn't detected

解决方案:

  1. 确认BIOS中开启VT-x/AMD-V
  2. 检查内核模块加载:
lsmod | grep kvm
  1. 对于云服务器,可能需要更换实例类型

6.2 Cannot connect to the Docker daemon

错误表现:

Cannot connect to the Docker daemon at unix:///var/run/docker.sock

排查步骤:

# 检查服务状态 systemctl status docker # 查看日志 journalctl -xe -u docker # 常见原因:SELinux阻止 sudo setenforce 0 sudo sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config

6.3 镜像拉取失败

配置国内镜像源后仍然无法拉取:

# 查看当前配置 docker info | grep Mirrors # 测试连接 curl -v https://registry-1.docker.io/v2/

可尝试的备用镜像源:

{ "registry-mirrors": [ "https://docker.mirrors.ustc.edu.cn", "https://registry.docker-cn.com" ] }

7. 生产环境最佳实践

7.1 日志轮转配置

防止Docker日志占用过多磁盘空间:

sudo tee /etc/logrotate.d/docker <<-'EOF' /var/lib/docker/containers/*/*.log { rotate 7 daily compress delaycompress missingok copytruncate } EOF

7.2 内核参数优化

在/etc/sysctl.conf中添加:

net.ipv4.ip_forward = 1 net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 vm.swappiness = 0 vm.overcommit_memory = 1 vm.panic_on_oom = 0 fs.inotify.max_user_instances = 8192 fs.inotify.max_user_watches = 524288

应用配置:

sudo sysctl -p

7.3 离线安装方案

在内网环境安装Docker的步骤:

  1. 在有网络的环境下载RPM包:
yum install --downloadonly --downloaddir=./docker-packages docker-ce docker-ce-cli containerd.io
  1. 打包传输到目标机器:
sudo yum localinstall *.rpm

8. 版本升级与维护

8.1 查看可用版本

列出所有Docker CE版本:

yum list docker-ce --showduplicates | sort -r

8.2 升级到指定版本

sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

8.3 降级版本

先卸载当前版本,再安装旧版:

sudo yum downgrade docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

9. 安全加固建议

9.1 启用用户命名空间

{ "userns-remap": "default" }

需要提前创建用户和组:

sudo groupadd -g 100000 dockremap sudo useradd -u 100000 -g dockremap -s /bin/false dockremap

9.2 限制容器能力

{ "default-ulimits": { "nofile": { "Name": "nofile", "Hard": 64000, "Soft": 64000 } }, "default-capabilities": [ "CHOWN", "DAC_OVERRIDE", "FSETID", "FOWNER", "NET_RAW", "SETGID", "SETUID", "SETFCAP", "SETPCAP", "NET_BIND_SERVICE" ] }

10. 性能监控与维护

10.1 资源使用监控

# 查看容器资源使用 docker stats # 磁盘空间分析 docker system df # 详细空间占用 docker system df -v

10.2 定期维护命令

# 清理停止的容器 docker container prune # 清理未使用的镜像 docker image prune -a # 清理构建缓存 docker builder prune # 全面清理 docker system prune -a --volumes

在实际生产环境中,我建议将上述维护命令通过crontab定期执行:

0 3 * * * /usr/bin/docker system prune -f --filter "until=168h"
返回列表