在 CentOS 上安装 Docker Engine

卸载旧版本

旧版本的 Docker 已过期docker或已过期docker-engine。在尝试安装新版本及其相关依赖项之前,请先卸载所有此类旧版本。

1
2
3
4
5
6
7
8
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

yum可能会报告您没有安装这些包。

/var/lib/docker/卸载 Docker 时,存储的图像、容器、卷和网络不会被自动删除。

1
rm -rf /var/lib/docker/

安装 Docker Engine

  1. 安装 Docker Engine、containerd 和 Docker Compose:

    要安装最新版本,请运行:

    1
    sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

修改 Docker 配置文件

创建或编辑 Docker 的配置文件 /etc/docker/daemon.json,并添加以下内容来指定新的存储路径(假设新路径为 /mnt/docker-data):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
"proxies": {
"http-proxy": "http://20.200.12.145:10809",
"https-proxy": "http://20.200.12.145:10809",
"no-proxy": "10.0.0.0/8,192.168.0.0/16,127.0.0.1,172.16.0.0/16,.svc,localhost"
},
"registry-mirrors": ["http://10.10.0.172:80/docker-hub"],
"insecure-registries": ["10.10.0.172:80","0.0.0.0"],
"data-root": "/home/ap/docker/docker-data",
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}

笔记

  • proxies 配置http代理,不需要可以删除
  • registry-mirrors 是自建harbor地址
  • insecure-registries 允许HTTP请求,因为自建harbor没有配置https
  • data-root docker的文件存储根目录

如果配置文件不存在,可以使用以下命令创建:

1
2
sudo mkdir -p /etc/docker
sudo nano /etc/docker/daemon.json

移动现有数据(如果需要保留现有数据):

1
sudo rsync -aP /var/lib/docker/ /home/ap/docker/docker-data

这会将当前的数据移动到新的存储位置。确保 /home/ap/docker/docker-data 目录有正确的权限和所有者,以便 Docker 可以访问。

启动 Docker 服务

1
2
3
sudo systemctl start docker
sudo systemctl enable docker.service
sudo systemctl enable containerd.service

验证 Docker 存储位置

你可以通过以下命令检查 Docker 是否使用了新的存储位置:

1
docker info | grep "Docker Root Dir"