一、前置环境检查
开始前先确认系统架构与内核版本,这决定了你要下载哪一种安装包。
bash
# 查看系统架构(x86_64 或 aarch64)
uname -m
# 查看内核版本(需 ≥ 3.10,推荐 4.18+)
uname -r
# 查看发行版信息(确认是否为麒麟 V10 / CentOS / Ubuntu 等)
cat /etc/os-release
| 输出架构 | 对应安装包 | 官方下载地址 |
|---|---|---|
| x86_64 | docker-xxx.tgz (x86) | download.docker.com/linux/stati... |
| aarch64 (ARM64) | docker-xxx.tgz (aarch64) | download.docker.com/linux/stati... |
Docker Compose 二进制文件从 GitHub Releases 下载:github.com/docker/comp... ,文件命名规则为 docker-compose-linux-x86_64 或 docker-compose-linux-aarch64,请严格对应架构。 |
二、Docker 离线安装(以麒麟 ARM64 / CentOS 通用二进制方式)
二进制方式适用于所有 Linux 发行版(含麒麟 V10 x86 / ARM64、CentOS),博客原文以下载 docker-20.10.7.tgz 为例,操作步骤如下。
1. 解压并部署二进制文件
bash
# 解压 docker 安装包
tar xvf docker-20.10.7.tgz
# 将 docker 全部二进制文件复制到 /usr/bin
cp -p docker/* /usr/bin/
# 验证可执行权限
ls -l /usr/bin/docker*
# 应看到 dockerd、docker 等文件均为 -rwxr-xr-x
2. 准备 docker.service 系统配置文件
bash
sudo vim /etc/systemd/system/docker.service
写入以下内容(博客原文指出该内容无需修改,可直接使用):
ini
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
#TasksMax=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
如需自定义 Docker 数据存储路径,可同时创建 /etc/docker/daemon.json:
bash
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<EOF
{
"data-root": "/data/docker",
"registry-mirrors": ["https://docker.m.daocloud.io"]
}
EOF
3. 启动并设置开机自启
bash
chmod +x /etc/systemd/system/docker.service
systemctl daemon-reload
systemctl start docker
systemctl enable docker.service
4. 验证安装
bash
docker -v # 输出 Docker version 20.10.7, build xxx 即成功
docker info # 查看 Storage Driver、Cgroup、Registry Mirrors 等
systemctl status docker # Active: active (running)
三、Docker Compose 离线安装
Docker Compose 是独立二进制文件,与 Docker 引擎解耦,安装非常简单。
1. 下载并上传
从 GitHub Releases 选择与架构对应的文件(本例为 ARM64),上传到服务器任意目录,例如 /data。
2. 部署到系统路径
bash
# 移动并重命名为 docker-compose
mv /data/docker-compose-linux-aarch64 /usr/local/bin/docker-compose
# 授予可执行权限
chmod +x /usr/local/bin/docker-compose
3. 验证
bash
docker-compose -v
# 输出示例:Docker Compose version v2.24.5
提示:Compose V2 已原生支持
docker compose(空格形式,作为 Docker CLI 插件)。如使用插件形式,可将二进制放到/usr/local/libexec/docker/cli-plugins/或/usr/libexec/docker/cli-plugins/目录下,命名为docker-compose。
四、Docker 与 Docker Compose 版本对应关系
Compose 文件格式版本与 Docker 引擎版本必须匹配,否则 docker-compose up 会报错。常用对照如下:
Compose 文件格式与 Docker Engine 兼容矩阵
| Compose 文件版本 | 所需 Docker Engine 最低版本 |
|---|---|
| Compose spec(最新规范) | 19.03.0+ |
| 3.8 | 19.03.0+ |
| 3.7 | 18.06.0+ |
| 3.6 | 18.02.0+ |
| 3.5 | 17.12.0+ |
| 3.4 | 17.09.0+ |
| 3.3 | 17.06.0+ |
| 3.2 | 17.04.0+ |
| 3.1 | 1.13.1+ |
| 3.0 | 1.13.0+ |
| 2.4 | 17.12.0+ |
| 2.3 | 17.06.0+ |
| 2.2 | 1.13.0+ |
| 2.1 | 1.12.0+ |
| 2.0 | 1.10.0+ |
| 1.0 | 1.9.1+ |
Docker 引擎与 Compose V1 / V2 对应关系
| Docker 引擎版本 | Compose V1(独立二进制) | Compose V2(插件/独立二进制) |
|---|---|---|
| Docker 20.10.0+ | 1.29.2 | v2.0.0 -- v2.15.1 |
| Docker 23.0.0+ | 已停止维护 | v2.17.0 -- v2.18.1 |
| Docker 24.0.0+ | 已停止维护 | v2.19.0 -- v2.21.0 |
| Docker 26.0.0+ | 已停止维护 | v2.24.0+ |

关键提示:Docker 官方自 2023 年 7 月起停止维护 Compose V1 ,新部署请使用 V2(
docker compose或docker-composev2.x 二进制);Docker 20.10 这类老版本搭配 Compose 1.29.2 + 文件格式 3.x 仍是常见稳定组合。
五、快速使用示例
1. 单容器部署(Nginx)
bash
# 拉取镜像
docker pull nginx:latest
# 启动并挂载端口
docker run -d --name my-nginx -p 8080:80 nginx:latest
# 验证
docker ps
curl http://localhost:8080
2. Docker Compose 多容器部署
创建 docker-compose.yml:
yaml
version: "3.8" # 对应 Docker Engine 19.03.0+
services:
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html
depends_on:
- app
app:
image: myapp:1.0
restart: always
environment:
- ENV=prod
执行常用命令:
bash
docker-compose up -d # 后台启动所有服务
docker-compose ps # 查看服务状态
docker-compose logs -f # 查看日志
docker-compose down # 停止并删除容器/网络
六、Docker 完全卸载
A. Ubuntu / Debian 系统(apt 安装方式)
参考博客引用的「ubuntu完全卸载docker及再次安装」,完整清理步骤如下:
bash
# 1. 停止 docker 相关服务
sudo systemctl stop docker docker.socket containerd
# 2. 卸载所有 docker 相关包
sudo apt-get purge -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker.io docker-doc
# 3. 卸载不再需要的依赖
sudo apt-get autoremove -y
sudo apt-get autoclean
# 4. 删除数据、配置、运行时残留(关键,否则重装后会沿用旧数据)
sudo rm -rf /var/lib/docker # 镜像与容器数据
sudo rm -rf /var/lib/containerd # containerd 数据
sudo rm -rf /etc/docker # daemon.json 等配置
sudo rm -rf /var/run/docker.sock # socket 文件
sudo rm -rf /etc/systemd/system/docker.service* # 若为手动部署需删除
B. CentOS / 麒麟系统(yum / 二进制安装方式)
bash
# yum 安装的卸载
sudo systemctl stop docker docker.socket containerd
sudo yum remove -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo rm -rf /var/lib/docker /var/lib/containerd /etc/docker /var/run/docker.sock
二进制手动部署的卸载(与上文离线安装对应,需删除所有手动放置的文件):
bash
systemctl stop docker docker.socket containerd
systemctl disable docker.service containerd.service
rm -f /etc/systemd/system/docker.service /usr/lib/systemd/system/docker.service
rm -f /usr/lib/systemd/system/containerd.service
rm -f /usr/bin/docker /usr/bin/dockerd /usr/bin/docker-init /usr/bin/docker-proxy /usr/bin/containerd /usr/bin/containerd-shim* /usr/bin/runc /usr/bin/ctr
rm -rf /var/lib/docker /var/lib/containerd /etc/docker /var/run/docker.sock
systemctl daemon-reload
C. Docker Compose 卸载
只删除二进制文件即可:
bash
# 独立二进制形式
rm -f /usr/local/bin/docker-compose
# CLI 插件形式(按实际目录)
rm -f /usr/local/libexec/docker/cli-plugins/docker-compose
rm -f /usr/libexec/docker/cli-plugins/docker-compose
# apt / yum 安装的插件
sudo apt-get purge -y docker-compose-plugin
sudo yum remove -y docker-compose-plugin
D. 验证卸载干净
bash
docker -v # 应提示 command not found
docker-compose -v # 应提示 command not found
systemctl status docker # 应显示 Unit docker.service could not be found
ls /var/lib/docker # 目录不存在
which dockerd docker docker-compose # 均无输出
七、常见报错与排查
| 报错现象 | 可能原因 | 解决方案 | |
|---|---|---|---|
Failed to start docker.service: Unit not found |
systemd 未加载到 service 文件或路径错误 | 确认文件位于 /etc/systemd/system/ 或 /usr/lib/systemd/system/,执行 systemctl daemon-reload 后重试 |
|
Cannot connect to the Docker daemon at unix:///var/run/docker.sock |
dockerd 未启动或 socket 权限不足 | systemctl start docker;或将当前用户加入 docker 组:usermod -aG docker $USER 后重新登录 |
|
iptables failed: iptables -t nat ... |
系统防火墙与 docker iptables 冲突(CentOS 7 firewalld 常见) | systemctl restart docker 重新加载规则;或避免关闭 firewalld,使用 firewall-cmd 开放端口 |
|
overlay2 不支持 / Storage driver 报错 |
内核过老或文件系统不支持 | 升级内核至 4.x+;CentOS 7 需确保使用 xfs 且 d_type=true(xfs_info / 查看 ftype=1) |
|
docker: Error response from daemon: cgroup ... |
cgroup 版本不匹配或 cgroups 未挂载 | 检查 `docker info | grep -i cgroup,必要时在 GRUB 添加 cgroup_enable=memory swapaccount=1` |
Compose 报 version is unsupported |
yml 顶层 version 字段高于当前 Docker Engine 支持范围 |
对照上方兼容矩阵调整 version,或直接删除该字段(Compose V2 推荐) |
|
| ARM 服务器安装报 seccomp 错误 | 缺少系统依赖库(libseccomp 等) | 在外网机用 repoquery --requires --resolve --recursive docker-ce 提前下载所有依赖一并离线安装 |
|
镜像拉取超时 / i/o timeout |
网络或镜像源不可达 | 配置 daemon.json 中的 registry-mirrors 后 systemctl restart docker;离线环境用 docker save/docker load 导入 |
八、镜像加速配置(可选)
国内环境推荐配置镜像加速,编辑 /etc/docker/daemon.json:
json
{
"data-root": "/data/docker",
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://dockerproxy.com",
"https://hub-mirror.c.163.com"
],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
}
}
bash
sudo systemctl daemon-reload
sudo systemctl restart docker
docker info | grep -A 3 "Registry Mirrors" # 验证加速器是否生效
配置 log-driver 与 log-opts 可防止长期运行容器日志占满磁盘,是生产环境的通用最佳实践。
以上内容覆盖了博客引用源的核心操作:麒麟/ARM64 离线二进制部署、Compose V2 二进制安装、Compose 文件格式与 Docker Engine 兼容矩阵、Ubuntu/CentOS/二进制三种卸载方式,以及部署全流程的常见报错处理。按对应架构替换下载链接即可在 x86_64 与 aarch64 双平台复用同一套流程。