Docker 环境部署指南:二进制安装与生产环境实践
前言
作为现代容器化技术的核心引擎,Docker 已成为 DevOps 流程中不可或缺的基础设施组件。本文将详细介绍 Docker 的二进制部署方案,这是生产环境中常用的部署方式之一,特别适用于需要定制化部署或受限网络环境的场景。
一、Docker 部署方案选型
在生产环境中,Docker 主要有两种部署方式:
-
包管理器安装(推荐开发环境使用)
- 优点:自动处理依赖关系,便于升级维护
- 缺点:需要联网且受发行版仓库版本限制
-
二进制部署(生产环境推荐)
- 优点:版本控制精确,离线环境可用,部署位置灵活
- 缺点:需手动管理依赖和更新
二、二进制部署 Docker 27.0.3 全流程
1. 准备工作
# 创建专用目录
mkdir -p /opt/docker && cd /opt/docker
2. 获取二进制包
推荐从官方镜像站获取稳定版本(需网络访问):
wget https://download.docker.com/linux/static/stable/x86_64/docker-27.0.3.tgz
对于内网环境,可通过跳板机中转:
scp user@jumpserver:/path/to/docker-27.0.3.tgz .
3. 解压与安装
# 解压到当前目录
tar xzvf docker-27.0.3.tgz
# 部署到系统路径
sudo cp docker/* /usr/bin/
# 验证可执行权限
sudo chmod +x /usr/bin/docker*
4. 启动 Docker 守护进程
生产环境建议使用 systemd 托管:
# 创建systemd服务文件
sudo tee /etc/systemd/system/docker.service <<-'EOF'
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
[Service]
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
EOF
# 重载并启动服务
sudo systemctl daemon-reload
sudo systemctl enable --now docker
5. 验证安装
# 检查服务状态
systemctl status docker
# 验证版本
docker version --format 'Client: {{.Client.Version}}\nServer: {{.Server.Version}}'
# 测试容器运行
docker run --rm hello-world
三、生产环境关键配置
1. 数据目录迁移
默认存储路径为 /var/lib/docker,建议挂载独立存储:
# 停止服务
sudo systemctl stop docker
# 迁移数据
sudo rsync -avz /var/lib/docker /data/
# 修改启动配置
sudo mkdir /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"data-root": "/data/docker",
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
}
}
EOF
# 重启生效
sudo systemctl start docker
2. 网络优化配置
{
"bip": "172.17.0.1/16",
"mtu": 1500,
"dns": ["8.8.8.8", "114.114.114.114"]
}
3. 安全加固建议
# 创建docker用户组
sudo groupadd docker
# 添加操作用户
sudo usermod -aG docker $USER
# 配置iptables规则
sudo iptables -N DOCKER-USER
sudo iptables -I DOCKER-USER -j DROP
四、完整卸载流程
- 停止服务
sudo systemctl stop docker
sudo systemctl disable docker
- 清理二进制文件
sudo rm -f /usr/bin/{containerd,ctr,docker,dockerd,docker-init,docker-proxy,runc}
- 彻底删除数据
sudo rm -rf /var/lib/docker /etc/docker
sudo rm -f /etc/systemd/system/docker.service
sudo systemctl daemon-reload
- 网络清理
sudo iptables -F
sudo iptables -X
五、版本升级方案
采用蓝绿部署策略实现无缝升级:
# 下载新版本
wget https://download.docker.com/linux/static/stable/x86_64/docker-<新版本>.tgz
# 并行安装
tar xzvf docker-<新版本>.tgz -C /opt/docker-new
# 切换版本
sudo systemctl stop docker
sudo cp /opt/docker-new/docker/* /usr/bin/
sudo systemctl start docker
# 回滚准备
ln -sf /opt/docker /opt/docker-old
六、生产环境排错指南
常见问题排查
- 服务启动失败
# 查看详细日志
journalctl -u docker -n 50 --no-pager
# 调试模式启动
dockerd --debug
- 容器网络异常
# 检查网络配置
docker network inspect bridge
# 验证iptables规则
iptables -L -n -v --line-numbers
- 存储驱动问题
# 查看存储状态
docker info | grep Storage
# 清理孤儿卷
docker volume prune
结语
二进制部署方式为生产环境提供了更高的灵活性和控制力。建议结合 CI/CD 流程将上述步骤自动化,并定期检查官方安全公告更新版本。对于大规模集群部署,建议考虑切换到 containerd 或直接使用 Kubernetes 容器运行时接口(CRI)。
浙公网安备 33010602011771号