15.2.2 Docker安装方式对比与选择

Docker安装方式对比与选择#

Docker 在不同发行版与场景下有多种安装方式。选择时应围绕 版本可控、升级策略、合规性、运维成本 做权衡。以下给出对比、示例、排错与练习。

原理草图:安装来源与运维路径对比

文章图片

1) 发行版仓库安装(系统自带源)#

适用:学习/验证、测试环境
特点:安装简单但版本滞后
示例(Ubuntu/Debian)

# 更新系统索引
sudo apt update

# 安装发行版仓库内的 docker
sudo apt install -y docker.io

# 验证版本
docker --version
# 预期输出示例:Docker version 20.xx (可能偏旧)

示例(CentOS/RHEL)

sudo yum install -y docker
sudo systemctl enable --now docker
docker --version

2) 官方仓库安装(推荐)#

适用:生产环境、版本可控
特点:更新及时、可锁定版本
示例(Ubuntu 22.04)

# 1) 添加官方源与密钥
sudo apt update
sudo apt install -y ca-certificates curl gnupg
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

# 2) 写入仓库源
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

# 3) 安装并锁定版本(可选)
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io

# 锁定版本(防止自动升级)
sudo apt-mark hold docker-ce docker-ce-cli containerd.io

示例(CentOS 7/8)

# 1) 添加官方仓库
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo \
  https://download.docker.com/linux/centos/docker-ce.repo

# 2) 安装
sudo yum install -y docker-ce docker-ce-cli containerd.io
sudo systemctl enable --now docker

# 3) 锁定版本(可选)
sudo yum install -y yum-plugin-versionlock
sudo yum versionlock add docker-ce docker-ce-cli containerd.io

3) 二进制包安装(手动部署)#

适用:定制化系统、无包管理环境
特点:最小依赖、维护成本高
示例(通用 Linux)

# 1) 下载二进制包(示例版本)
wget https://download.docker.com/linux/static/stable/x86_64/docker-24.0.7.tgz

# 2) 解压并放到 /usr/local/bin
tar -zxvf docker-24.0.7.tgz
sudo cp docker/* /usr/local/bin/

# 3) 创建 systemd 服务
sudo tee /etc/systemd/system/docker.service >/dev/null <<'EOF'
[Unit]
Description=Docker Engine
After=network-online.target
Wants=network-online.target

[Service]
Type=notify
ExecStart=/usr/local/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=1048576
Restart=always

[Install]
WantedBy=multi-user.target
EOF

# 4) 启动服务
sudo systemctl daemon-reload
sudo systemctl enable --now docker
docker --version

4) 离线安装(内网/安全环境)#

适用:无外网、严格合规环境
特点:需准备依赖包与本地仓库
示例(基于 RPM 离线包)

# 1) 在有网环境下载 RPM 依赖(示例)
mkdir -p /tmp/docker-rpms
cd /tmp/docker-rpms
yum download --resolve docker-ce docker-ce-cli containerd.io

# 2) 拷贝到内网服务器后安装
sudo yum localinstall -y ./*.rpm
sudo systemctl enable --now docker

示例(DEB 离线包)

# 在有网环境下载依赖
mkdir -p /tmp/docker-debs
cd /tmp/docker-debs
apt-get download docker-ce docker-ce-cli containerd.io

# 复制到内网后安装
sudo dpkg -i ./*.deb
sudo apt -f install -y  # 修复依赖

选择建议与决策要点#

  • 生产环境:官方仓库 + 版本锁定 + 变更流程
  • 企业内网:离线安装 + 私有镜像仓库 + 统一升级窗口
  • 定制系统:二进制方式 + 自维护 systemd 与安全补丁
  • 学习测试:发行版仓库安装即可

常见排错与验证#

1) 服务启动失败

# 查看服务状态
systemctl status docker

# 查看详细日志
journalctl -u docker --no-pager -n 200

可能原因:内核版本过低、依赖缺失、daemon 参数错误。

2) 命令不可用或权限不足

# 验证 docker 是否在 PATH
which docker

# 非 root 用户使用 docker 需加入 docker 组
sudo usermod -aG docker $USER
newgrp docker

# 再验证
docker info

3) 版本确认

docker --version
docker info | grep -E "Server Version|Storage Driver"

练习#

  1. 在测试机上分别用 发行版仓库官方仓库 安装,记录版本差异与升级体验。
  2. 使用 官方仓库 安装后,尝试 锁定版本,再执行系统升级验证版本是否保持不变。
  3. 尝试 二进制安装 并手工配置 systemd 服务,确保 docker 开机自启。
  4. 模拟 离线安装:在有网机器下载 RPM/DEB,复制到无网机器完成安装并验证 docker info 输出。