Skip to content
云间札记
Go back

Docker 多环境安装指南:CentOS、Ubuntu、AWS 与 Mac 全平台覆盖

Updated:

前言

Docker 作为现代运维和开发的基础工具,在不同 Linux 发行版及 Mac 上的安装方式各有差异。本文整理了一键安装脚本与手动安装步骤,覆盖生产环境常用的 CentOS 7.9、Ubuntu 22.04、AWS Amazon Linux 2023 以及开发环境 Mac,并包含镜像加速、目录迁移、远程 API 等生产必备配置。


一、CentOS 7.9 安装

1.1 一键安装(推荐)

阿里云环境亲测可用:

curl -sSL https://gitee.com/mrchis/docker-install/releases/download/docker-install-linux7.9/docker-intall-linux-7.9.sh | sh

1.2 手动安装步骤

卸载旧版本

yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine -y

安装依赖并配置阿里云镜像源

yum install -y yum-utils device-mapper-persistent-data lvm2

# 添加阿里云镜像源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 修正版本号适配 CentOS 7
sed -i 's/$releasever/7/g' /etc/yum.repos.d/docker-ce.repo
sed -i 's/0/1/g' /etc/yum.repos.d/docker-ce.repo

安装 Docker

# 最新版
yum install -y docker-ce docker-ce-cli containerd.io

# 或指定版本(如 20.10.7)
yum install -y docker-ce-20.10.7 docker-ce-cli-20.10.7 containerd.io-1.4.6

启动并设置开机自启

systemctl start docker
systemctl enable docker --now
systemctl status docker

1.3 配置镜像加速

mkdir -p /etc/docker

cat > /etc/docker/daemon.json <<"EOF"
{
  "registry-mirrors": [
    "https://wh9z3wm8.mirror.aliyuncs.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://hub-mirror.c.163.com",
    "https://reg-mirror.qiniu.com"
  ],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF

systemctl daemon-reload
systemctl restart docker

https://wh9z3wm8.mirror.aliyuncs.com 为阿里云容器镜像服务的镜像加速器地址,需登录阿里云控制台获取专属地址。

1.4 开启远程 API(可选)

vim /usr/lib/systemd/system/docker.service

# 修改 ExecStart 行
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

systemctl daemon-reload
systemctl restart docker

二、Ubuntu 22.04 安装

2.1 华为云环境

# 安装依赖
apt -y install apt-transport-https ca-certificates curl software-properties-common

# 添加 GPG 密钥(国内用阿里云,国外用官方)
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | apt-key add -

# 添加仓库
add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

# 安装
apt update
apt install docker-ce -y

2.2 AWS Ubuntu 22.04

sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common -y

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

sudo apt update
sudo apt install docker-ce -y

sudo systemctl enable docker
sudo systemctl start docker

2.3 配置 systemd 驱动(Kubernetes 环境必需)

cat > /etc/docker/daemon.json <<"EOF"
{
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "https://hub-mirror.c.163.com",
    "https://reg-mirror.qiniu.com",
    "https://registry.docker-cn.com"
  ],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "200m"
  },
  "storage-driver": "overlay2"
}
EOF

systemctl daemon-reload
systemctl enable docker.service --now

自 Kubernetes v1.22 起,kubelet 默认 cgroup driver 为 systemd,Docker 需与其保持一致。


三、AWS Amazon Linux 2023 安装

3.1 官方仓库安装

# Amazon Linux 2023 官方直接支持
sudo dnf install -y docker

sudo systemctl start docker
sudo systemctl enable docker
sudo docker --version

3.2 指定版本安装(Docker CE 25.0.5)

# 使用阿里云或官方仓库
sudo dnf install -y docker-ce-3:25.0.5-1.el9                     docker-ce-cli-1:25.0.5-1.el9                     containerd.io

3.3 修改 Docker 数据目录

生产环境建议将 Docker 数据目录迁移至独立数据盘:

# 创建新目录
mkdir -vp /data/docker/workspace
mkdir -vp /etc/docker/

# 单机容器配置
cat > /etc/docker/daemon.json <<"EOF"
{
  "data-root": "/data/docker/workspace",
  "exec-opts": ["native.cgroupdriver=cgroupfs"]
}
EOF

# Kubernetes 环境配置(必须 systemd)
cat > /etc/docker/daemon.json <<"EOF"
{
  "data-root": "/data/docker/workspace",
  "exec-opts": ["native.cgroupdriver=systemd"]
}
EOF

# 迁移现有数据
rsync -aP /var/lib/docker/ /data/docker/workspace

systemctl daemon-reload
systemctl restart docker

# 验证
docker info | grep "Docker Root Dir"

3.4 内核参数配置(Kubernetes 必需)

Amazon Linux 2023 需调整内核参数以兼容 Docker 和 Kubernetes:

# 查看当前内核
grubby --default-kernel
# /boot/vmlinuz-6.1.147-172.266.amzn2023.x86_64

# 添加内核参数
sudo grubby --update-kernel=/boot/vmlinuz-6.1.147-172.266.amzn2023.x86_64   --args="cgroup_enable=memory swapaccount=1 systemd.unified_cgroup_hierarchy=0"

# 验证
grubby --info=/boot/vmlinuz-6.1.147-172.266.amzn2023.x86_64 | grep args

# 重启
sudo reboot

# 验证生效
cat /proc/cmdline
docker info | egrep "Cgroup Driver|Cgroup Version"

3.5 安装 Docker Compose

# 最新版
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)"   -o /usr/local/bin/docker-compose

# 或指定版本 v2.29.7
sudo curl -L "https://github.com/docker/compose/releases/download/v2.29.7/docker-compose-linux-x86_64"   -o /usr/local/bin/docker-compose

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

四、Mac 安装

# 安装 Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# 安装 Docker Desktop
brew install --cask --appdir=/Applications docker

五、Docker 与 Docker Compose 升级

5.1 Docker 升级

# 停止服务
systemctl stop docker

# 卸载旧版本
yum remove docker docker-client docker-client-latest docker-common   docker-latest docker-latest-logrotate docker-logrotate docker-engine

rm -rf /etc/systemd/system/docker.service.d
rm -rf /var/lib/docker
rm -rf /var/run/docker

# 重新安装(见上文各系统安装步骤)

5.2 Docker Compose 升级

# 下载新版本,版本号可在 https://github.com/docker/compose/releases 查看
curl -L https://github.com/docker/compose/releases/download/1.27.2/docker-compose-$(uname -s)-$(uname -m)   -o /usr/local/bin/docker-compose

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

六、常见问题

6.1 daemon.json 配置冲突

错误unable to configure the Docker daemon with file /etc/docker/daemon.json

解决:编辑 /usr/lib/systemd/system/docker.service,删除 $INSECURE_REGISTRY 相关行(约倒数 15 行)。

6.2 Ubuntu 修改数据目录(snapd 环境)

AWS Ubuntu 若使用 snapd 管理 Docker,需先停止:

sudo systemctl stop snapd.socket
sudo systemctl stop snapd.service
sudo systemctl stop docker.socket

# 然后按 2.3 节配置 daemon.json 并迁移数据

6.3 查看 Docker 网络与容器

# 查看网络列表
docker network ls

# 查看 bridge 网络下的容器名称
docker network inspect 8b8e127068cd |   jq '.[0].Containers | to_entries[] | .value.Name'

总结

环境包管理器关键配置
CentOS 7.9yum阿里云镜像源、systemd 驱动
Ubuntu 22.04apt官方/阿里云源、systemd 驱动
AWS AL2023dnf内核参数、数据目录迁移
MacbrewDocker Desktop

生产环境部署建议:

  1. 数据目录迁移:将 /var/lib/docker 迁移至独立数据盘
  2. 日志限制:配置 log-opts.max-size 防止日志占满磁盘
  3. 镜像加速:国内环境必配,提升镜像拉取速度
  4. cgroup 驱动:Kubernetes 环境统一使用 systemd

本文首发于 云间札记,转载请注明出处。



Next Post
运维资产管理系统设计与实现:多云环境下的资源治理与堡垒机一体化