Linux系统重装后Docker部署与优化指南
1. 重装Linux系统后的Docker部署指南
刚完成Linux系统重装后,第一件要事就是搭建开发环境。作为现代应用部署的事实标准,Docker的安装配置直接决定了后续工作效率。不同于Windows/macOS的一键安装包,Linux环境下需要更多手动配置,但同时也带来更高的灵活性和控制力。
我在运维岗位上经历过数十次系统迁移,总结出这套经过生产环境验证的Docker部署方案。无论你是使用Ubuntu、CentOS还是国产统信UOS,这套方法都能快速构建稳定的容器环境。下面将从系统准备、依赖处理、安装验证到权限配置,手把手带你避开那些新手常踩的坑。
2. 系统环境准备
2.1 选择适合的Linux发行版
不同的Linux发行版在软件源管理和内核版本上存在差异,这直接影响Docker的安装方式:
- Ubuntu/Debian系 :使用apt管理软件包,建议选择LTS版本(如Ubuntu 22.04)
- RHEL/CentOS系 :使用yum/dnf管理软件包,推荐CentOS 7+或AlmaLinux 8+
- 国产系统 :统信UOS、麒麟等基于Debian/Deepin,可参考Ubuntu方案
重要提示:内核版本需≥3.10(建议≥4.x),通过
uname -r确认。如果是老旧系统,需先升级内核:
# Ubuntu升级内核示例
sudo apt update && sudo apt install --install-recommends linux-generic-hwe-22.04
2.2 清理残留的旧版本
重装系统虽已清除数据,但某些自定义配置目录可能保留在/home分区。执行彻底清理:
sudo rm -rf /var/lib/docker
sudo rm -rf /etc/docker
sudo rm -f /etc/apparmor.d/docker
sudo groupdel docker 2>/dev/null
3. Docker安装全流程
3.1 官方仓库配置
不同发行版的仓库配置方法:
Ubuntu/Debian :
# 安装基础工具
sudo apt update && sudo apt install -y ca-certificates curl gnupg
# 添加官方GPG密钥
sudo install -m 0755 -d /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
# 设置稳定版仓库
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
RHEL/CentOS :
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3.2 核心组件安装
执行安装命令前,建议先更新软件源缓存:
# Ubuntu/Debian
sudo apt update
# RHEL/CentOS
sudo yum makecache
安装Docker引擎:
# Ubuntu/Debian
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# RHEL/CentOS
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
3.3 国产系统特别处理
对于统信UOS等国产系统,若遇到依赖问题,可尝试以下方案:
# 添加Debian兼容源
echo "deb http://deb.debian.org/debian buster main" | sudo tee /etc/apt/sources.list.d/debian-compat.list
sudo apt update --allow-insecure-repositories
sudo apt install -y --allow-unauthenticated docker.io
4. 安装后关键配置
4.1 用户权限管理
避免每次使用sudo执行docker命令:
sudo usermod -aG docker $USER
newgrp docker # 立即生效无需重启
验证权限配置:
docker run --rm hello-world
成功运行表示基础环境已就绪。
4.2 镜像加速配置
国内用户建议配置镜像加速器(以阿里云为例):
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://<your-aliyun-id>.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF
应用配置并重启服务:
sudo systemctl daemon-reload
sudo systemctl restart docker
4.3 开机自启设置
生产环境必须确保Docker服务自动启动:
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
5. 深度优化与问题排查
5.1 存储驱动选择
查看当前存储驱动:
docker info | grep "Storage Driver"
推荐配置(适用于大多数现代系统):
- overlay2(默认)
- btrfs(适用于Btrfs文件系统)
- zfs(ZFS专用)
5.2 常见故障处理
问题1:iptables/nftables冲突
# 解决方案1:切换为iptables-legacy
sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
# 解决方案2:启用nftables后端
echo '{ "iptables": false }' | sudo tee /etc/docker/daemon.json
问题2:cgroup v2兼容性问题
# 临时切换为cgroup v1
sudo grubby --update-kernel=ALL --args="systemd.unified_cgroup_hierarchy=0"
问题3:磁盘空间不足 定期清理无用资源:
docker system prune -af
6. 生产环境增强配置
6.1 日志轮转设置
编辑systemd配置文件:
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo tee /etc/systemd/system/docker.service.d/docker.conf <<-'EOF'
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --log-opt max-size=50m --log-opt max-file=3
EOF
6.2 安全加固建议
- 禁用API远程访问:
sudo sed -i 's/-H fd:\/\///g' /lib/systemd/system/docker.service
- 启用用户命名空间隔离:
echo '{"userns-remap": "default"}' | sudo tee -a /etc/docker/daemon.json
- 限制容器能力:
docker run --cap-drop ALL --cap-add NET_BIND_SERVICE ...
7. 扩展工具链安装
7.1 Docker Compose V2
现代Docker已内置compose插件,如需独立安装:
# Linux通用安装方式
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
mkdir -p $DOCKER_CONFIG/cli-plugins
curl -SL https://github.com/docker/compose/releases/latest/download/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
7.2 实用辅助工具
- ctop - 容器监控工具:
sudo wget https://github.com/bcicen/ctop/releases/download/v0.7.7/ctop-0.7.7-linux-amd64 -O /usr/local/bin/ctop
sudo chmod +x /usr/local/bin/ctop
- dive - 镜像分析工具:
wget https://github.com/wagoodman/dive/releases/download/v0.11.0/dive_0.11.0_linux_amd64.deb
sudo apt install ./dive_0.11.0_linux_amd64.deb
8. 国产化替代方案
对于有信创要求的场景,可考虑以下替代品:
- iSula (华为开源容器引擎):
curl -fsSL https://isula.xyz/install.sh | sh
- PouchContainer (阿里云容器引擎):
wget https://github.com/alibaba/pouch/releases/download/v1.3.0/pouch-1.3.0-ubuntu.x86_64.deb
sudo dpkg -i pouch-1.3.0-ubuntu.x86_64.deb
- KubeOS (统信容器OS): 需从统信应用商店获取专用安装包
9. 性能调优实战
9.1 文件系统优化
推荐使用XFS或ext4(带metadata_csum):
# 创建优化后的XFS文件系统
sudo mkfs.xfs -f -n ftype=1 /dev/sdb1
挂载参数建议:
# /etc/fstab示例
/dev/mapper/vg0-docker /var/lib/docker xfs defaults,pquota,prjquota 0 0
9.2 内存与swap配置
限制容器内存使用:
docker run -it --memory="1g" --memory-swap="2g" alpine
调整swappiness:
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
9.3 网络性能优化
启用IPVS负载均衡:
echo '{"ipv6": false, "ip6tables": false, "experimental": false, "ipvs": true}' | sudo tee /etc/docker/daemon.json
调整conntrack参数:
sudo modprobe nf_conntrack
echo 'net.netfilter.nf_conntrack_max=1048576' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
10. 持续维护建议
- 版本升级策略 :
# Ubuntu/Debian
sudo apt update && sudo apt --only-upgrade install docker-ce
# RHEL/CentOS
sudo yum update docker-ce
- 备份关键数据 :
# 备份容器配置
docker ps -aq | xargs docker inspect > /backup/container_metadata.json
# 备份卷数据
tar -czvf /backup/docker_volumes.tar.gz /var/lib/docker/volumes/
- 监控方案集成 :
# 安装cAdvisor
docker run \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:ro \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--publish=8080:8080 \
--detach=true \
--name=cadvisor \
gcr.io/cadvisor/cadvisor:v0.47.0
这套方案已在金融、互联网等多个行业的生产环境中验证过稳定性。根据具体业务需求,你可能还需要配置私有仓库、网络策略或安全扫描工具。记住,容器化只是手段,真正的价值在于通过标准化交付提升整体运维效率。
更多推荐
所有评论(0)