Docker 环境部署指南:二进制安装与生产环境实践

前言

作为现代容器化技术的核心引擎,Docker 已成为 DevOps 流程中不可或缺的基础设施组件。本文将详细介绍 Docker 的二进制部署方案,这是生产环境中常用的部署方式之一,特别适用于需要定制化部署或受限网络环境的场景。

一、Docker 部署方案选型

在生产环境中,Docker 主要有两种部署方式:

  1. 包管理器安装(推荐开发环境使用)

    • 优点:自动处理依赖关系,便于升级维护
    • 缺点:需要联网且受发行版仓库版本限制
  2. 二进制部署(生产环境推荐)

    • 优点:版本控制精确,离线环境可用,部署位置灵活
    • 缺点:需手动管理依赖和更新

二、二进制部署 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

四、完整卸载流程

  1. 停止服务
sudo systemctl stop docker
sudo systemctl disable docker
  1. 清理二进制文件
sudo rm -f /usr/bin/{containerd,ctr,docker,dockerd,docker-init,docker-proxy,runc}
  1. 彻底删除数据
sudo rm -rf /var/lib/docker /etc/docker
sudo rm -f /etc/systemd/system/docker.service
sudo systemctl daemon-reload
  1. 网络清理
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

六、生产环境排错指南

常见问题排查

  1. 服务启动失败
# 查看详细日志
journalctl -u docker -n 50 --no-pager

# 调试模式启动
dockerd --debug
  1. 容器网络异常
# 检查网络配置
docker network inspect bridge

# 验证iptables规则
iptables -L -n -v --line-numbers
  1. 存储驱动问题
# 查看存储状态
docker info | grep Storage

# 清理孤儿卷
docker volume prune

结语

二进制部署方式为生产环境提供了更高的灵活性和控制力。建议结合 CI/CD 流程将上述步骤自动化,并定期检查官方安全公告更新版本。对于大规模集群部署,建议考虑切换到 containerd 或直接使用 Kubernetes 容器运行时接口(CRI)。

posted on 2025-04-01 17:58  Leo-Yide  阅读(738)  评论(0)    收藏  举报