目录
Toggle方案一:使用 Docker 官方仓库安装,推荐
本文以 CentOS/RHEL 系统为例。
推荐顺序:
- 优先使用 Docker 官方 yum/dnf 仓库安装 Docker
- 优先使用
docker-compose-plugin,命令为docker compose - Docker CLI 版本过老时,再使用 legacy
docker-compose - 二进制安装方式仅作为离线或特殊场景备用方案
一、添加 Docker 官方仓库
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
二、替换为国内源,可选
使用清华源
sed -i 's+https://download.docker.com+https://mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo
或者直接使用中科大源
yum-config-manager --add-repo http://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
三、安装 Docker 和 Docker Compose 插件
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
如果系统使用的是 dnf:
dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
四、启动 Docker
systemctl enable --now docker
systemctl status docker
五、验证 Docker 和 Docker Compose
docker version
docker info
docker run hello-world
docker compose version
Docker Compose 安装方式选择
安装 Docker Compose 前,先查看 Docker CLI 版本:
docker version
或者只查看客户端版本:
docker version --format '{{.Client.Version}}'
选择规则:
- Docker CLI
>= 18.09:推荐使用 Docker CLI 插件方式,命令是docker compose - Docker CLI
< 18.09:大概率不识别cli-plugins,只能升级 Docker CLI,或使用 legacydocker-compose
推荐方案:使用 docker-compose-plugin
如果前面已经安装过:
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
通常已经包含 Docker Compose 插件。
验证:
docker compose version
使用方式:
docker compose up -d
docker compose ps
docker compose logs -f
docker compose down
备用方案:手动安装 Docker Compose 插件
适用于 Docker 已安装成功,但系统仓库中没有 docker-compose-plugin 的场景。
mkdir -p /usr/local/lib/docker/cli-plugins
curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/lib/docker/cli-plugins/docker-compose
chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
docker compose version
如果需要固定 Docker Compose 版本:
curl -L "https://github.com/docker/compose/releases/download/v2.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/lib/docker/cli-plugins/docker-compose
chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
docker compose version
兼容方案:安装 legacy docker-compose
适用于 Docker CLI 版本过老,或者需要兼容老脚本的场景。
安装后使用:
docker-compose
安装命令:
curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
ln -sf /usr/local/bin/docker-compose /usr/bin/docker-compose
docker-compose version
方案二:直接下载 Docker 二进制文件,备用
不推荐作为常规安装方式。
二进制安装适合离线环境、临时测试或特殊系统环境。
如果服务器可以正常使用 yum/dnf,建议优先使用方案一。
一、安装 Docker 二进制文件
wget https://download.docker.com/linux/static/stable/x86_64/docker-29.0.4.tgz
tar xzvf docker-29.0.4.tgz
cp docker/* /usr/bin/
docker --version
dockerd --version
二、临时启动 Docker daemon
dockerd &
注意:
使用二进制方式安装时,dockerd &只适合临时启动。
如果需要长期使用,建议仍然改用 yum/dnf 安装,并通过systemd管理 Docker 服务。
三、验证 Docker
docker info
docker run hello-world
四、卸载二进制安装的 Docker
注意:
以下命令只适用于通过cp docker/* /usr/bin/这种二进制方式安装的 Docker。
如果 Docker 是通过 yum/dnf 安装的,不要使用这种方式卸载。
pkill dockerd
pkill containerd
rm -f /usr/bin/docker
rm -f /usr/bin/dockerd
rm -f /usr/bin/docker-init
rm -f /usr/bin/docker-proxy
rm -f /usr/bin/containerd
rm -f /usr/bin/containerd-shim
rm -f /usr/bin/containerd-shim-runc-v2
rm -f /usr/bin/ctr
rm -f /usr/bin/runc
rm -f /usr/local/lib/docker/cli-plugins/docker-compose
rm -f /usr/local/bin/docker-compose
rm -f /usr/bin/docker-compose
如果需要彻底清理 Docker 数据,可以执行:
rm -rf /var/lib/docker
rm -rf /var/lib/containerd
rm -rf /etc/docker
注意:
彻底清理会删除所有镜像、容器、卷和 containerd 数据。
总结
推荐安装方式:
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
systemctl enable --now docker
docker compose version
推荐使用新版 Compose 命令:
docker compose
旧版兼容命令:
docker-compose
只建议在以下场景使用:
- Docker CLI 版本过老,不支持
cli-plugins - 老项目脚本中已经写死了
docker-compose - 暂时无法升级 Docker CLI
安装docker之后配置docker数据存储位置:
方法1: 修改配置文件
mkdir -p /etc/docker
cat > /etc/docker/daemon.json << 'EOF'
{
"registry-mirrors": [
"https://docker.1ms.run",
"https://docker.1panel.live",
"https://docker.m.ixdev.cn",
"https://hub.rat.dev",
"https://docker.xuanyuan.me",
"https://dockerproxy.net",
"https://docker-registry.nmqu.com",
"https://hub.amingg.com",
"https://docker.amingg.com",
"https://docker.hlmirror.com",
"https://hub1.nat.tf",
"https://hub2.nat.tf",
"https://hub3.nat.tf",
"https://docker.m.daocloud.io",
"https://docker.kejilion.pro",
"https://docker.367231.xyz",
"https://hub.1panel.dev",
"https://dockerproxy.cool",
"https://docker.apiba.cn",
"https://proxy.vvvv.ee"
],
"data-root": "/root/data"
}方法2: 修改启动选项
systemctl cat docker 查看systemd文件位置
在启动选项后加 --data-root=/root/data
ExecStart=/usr/bin/dockerd --data-root=/root/data
配置端口转发
sed -i ‘s#^net.ipv4.ip_forward=0$#net.ipv4.ip_forward=1#g’ /etc/sysctl.conf
sysctl -p >> temp.log
启动测试
修改后进行如下操作
systemctl daemon-reload
systemctl enable --now docker
快速启动测试:
docker load -i < nginx_1.24-alpine.tar
docker run -d -p 80:80 --name test_nginx nginx:1.24-alpine
curl -v http://localhost