Docker 离线安装和镜像源配置
-
- [1、Docker 离线安装](#1、Docker 离线安装)
-
- [1.1、下载 Docker 离线安装包](#1.1、下载 Docker 离线安装包)
- [1.2、安装 Docker](#1.2、安装 Docker)
- [2、Docker Compose 离线安装](#2、Docker Compose 离线安装)
-
- [2.1、下载 Docker Compose 离线安装包](#2.1、下载 Docker Compose 离线安装包)
- [2.2、安装 Docker Compose](#2.2、安装 Docker Compose)
- [3、切换 Docker 镜像源](#3、切换 Docker 镜像源)
-
- [3.1、创建 / 编辑 Docker 守护进程配置文件](#3.1、创建 / 编辑 Docker 守护进程配置文件)
- [3.2、重新加载配置并重启 Docker 服务](#3.2、重新加载配置并重启 Docker 服务)
- 3.3、验证镜像源是否配置成功
1、Docker 离线安装
1.1、下载 Docker 离线安装包
下载(docker-24.0.7.tgz)并上传到服务器 /opt/docker
下载地址:https://download.docker.com/linux/static/stable/x86_64/docker-24.0.7.tgz
1.2、安装 Docker
- 创建并编写 docker.service 文件
bash
sudo vi docker.service
这是 Docker 守护进程(dockerd)的 systemd 服务配置文件,核心作用是告诉 Linux 的 systemd 服务管理器:如何启动、管理、重启 Docker 服务,以及Docker 服务的依赖关系、资源限制、运行策略等。
bash
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
- 1.3、配置项解释
1. [Unit] 段:服务元数据与依赖关系
这一部分主要定义服务的描述、文档地址,以及启动顺序和依赖的服务/目标。
| 配置项 | 含义 |
|---|---|
Description=Docker Application Container Engine |
服务的简短描述,说明这是Docker应用容器引擎 |
Documentation=https://docs.docker.com |
服务的官方文档地址,方便运维人员查阅 |
After=network-online.target firewalld.service |
定义启动顺序:Docker服务必须在network-online.target(网络完全就绪)和firewalld.service(防火墙服务)之后启动,确保网络和防火墙就绪后再启动Docker |
Wants=network-online.target |
弱依赖关系:Docker服务"希望"network-online.target就绪,但即使这个目标没就绪,Docker也能启动(区别于Requires(强依赖),强依赖的服务失败则Docker也启动失败) |
2. [Service] 段:服务运行核心规则
这是配置的核心,定义Docker服务的启动命令、运行模式、资源限制、重启策略等。
| 配置项 | 含义 |
|---|---|
Type=notify |
Docker 启动完成后,会主动告诉 systemd "我准备好了",systemd 会等待这个通知再标记服务启动成功 |
ExecStart=/usr/bin/dockerd |
启动 Docker 服务时执行的核心命令:运行 Docker 守护进程(dockerd 是 Docker 的后台服务进程) |
ExecReload=/bin/kill -s HUP $MAINPID |
重新加载 Docker 配置时执行的命令:给 Docker 主进程($MAINPID 是自动识别的进程ID)发"HUP信号",让 dockerd 不重启就能加载新配置 |
LimitNOFILE=infinity |
放开 Docker 进程能打开的文件数量限制(默认系统有上限,Docker 要管理大量容器,必须无限制) |
LimitNPROC=infinity |
放开 Docker 进程能创建的子进程数量限制 |
LimitCORE=infinity |
放开 Docker 核心转储文件(崩溃时的调试文件)的大小限制,方便排查问题 |
TimeoutStartSec=0 |
禁用启动超时:Docker 启动时间可能不确定,设置 0 表示 systemd 不会因为"启动太久"而终止 Docker |
Delegate=yes |
允许 Docker 自己管理容器的资源(比如CPU、内存限制),不让 systemd 重置这些配置 |
KillMode=process |
停止 Docker 服务时,只杀死 Docker 主进程,不会杀死容器进程(避免停 Docker 就把所有容器都关掉) |
Restart=on-failure |
重启策略:只有 Docker 非正常退出(比如崩溃、报错)时才自动重启,手动停止则不重启 |
StartLimitBurst=3 |
60秒内最多允许 Docker 重启3次 |
StartLimitInterval=60s |
配合上面的配置,限制60秒内的重启次数,防止 Docker 无限循环重启(比如配置错误导致启动就崩溃) |
3. [Install] 段:服务安装/开机自启规则
这一部分定义"启用(enable)Docker服务"时的行为,即开机自启的规则。
| 配置项 | 含义 |
|---|---|
WantedBy=multi-user.target |
表示 Docker 服务会被添加到"多用户模式"(Linux的基础运行级别,字符界面多用户登录)的启动项中。执行systemctl enable docker时,systemd 会在multi-user.target.wants目录下创建 Docker 服务的软链接,实现开机自启 |
- 创建并编写自动化安装脚本文件
bash
sudo vi install.sh
这段脚本的核心是:接收一个 Docker 二进制 tar 包作为参数($1),自动完成解压、程序部署、systemd 服务配置、启动服务、设置开机自启,并最终验证 Docker 是否安装成功,全程会打印提示信息,方便查看执行进度。
bash
#!/bin/sh
echo '解压tar包...'
tar -xvf $1
echo '将docker目录移到/usr/bin目录下...'
cp docker/* /usr/bin/
echo '将docker.service 移到/etc/systemd/system/ 目录...'
cp docker.service /etc/systemd/system/
echo '添加文件权限...'
chmod +x /etc/systemd/system/docker.service
echo '重新加载配置文件...'
systemctl daemon-reload
echo '启动docker...'
systemctl start docker
echo '设置开机自启...'
systemctl enable docker.service
echo 'docker安装成功...'
docker -v
- 执行 install.sh 脚本安装 Docker
bash
chmod +x install.sh
./install.sh docker-24.0.7.tgz
- 测试是否部署成功
bash
sudo docker -v
#正常输出 Docker version 24.0.7, build afdd53b
2、Docker Compose 离线安装
Docker Compose 是 Docker 官方推出的工具,核心作用是:通过一个统一的 YAML 配置文件(通常叫 docker-compose.yml),定义和管理多个相互关联的 Docker 容器,实现 "一键启动 / 停止 / 重启所有关联容器",彻底替代手动执行大量 docker run 命令的繁琐操作。
2.1、下载 Docker Compose 离线安装包
下载(docker-compose-linux-x86_64.bin)并上传到服务器
下载地址:https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-linux-x86_64
2.2、安装 Docker Compose
- 安装脚本
bash
sudo mv docker-compose-linux-x86_64.bin /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
- 安装验证脚本
bash
sudo docker-compose -v
#正常输出 Docker Compose version v2.20.2
3、切换 Docker 镜像源
3.1、创建 / 编辑 Docker 守护进程配置文件
- 创建 / 编辑 daemon.json,新增 registry-mirrors 配置,添加镜像源
bash
vim /etc/docker/daemon.json
bash
{
"debug": true,
"experimental": false,
"registry-mirrors": [
"https://docker.1ms.run",
"https://docker.m.daocloud.io",
"https://lispy.org",
"https://docker-0.unsee.tech",
"https://docker.xuanyuan.me"
]
}
3.2、重新加载配置并重启 Docker 服务
bash
# 重新加载systemd配置
systemctl daemon-reload
# 重启Docker服务
systemctl restart docker
3.3、验证镜像源是否配置成功
执行 docker info 命令
bash
docker info
在输出结果中,找到 Registry Mirrors 字段,若显示刚才配置的镜像地址,则说明配置成功:
