Docker 离线安装和镜像源配置

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
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 字段,若显示刚才配置的镜像地址,则说明配置成功:

相关推荐
lbb 小魔仙2 小时前
MyBatis-Plus 系统化实战:从基础 CRUD 到高级查询与性能优化
java·性能优化·mybatis
tsyjjOvO2 小时前
Maven从入门到精通
java·maven
JMchen1232 小时前
跨平台相机方案深度对比:CameraX vs. Flutter Camera vs. React Native
java·经验分享·数码相机·flutter·react native·kotlin·dart
day day day ...2 小时前
easyExcel和poi分别处理不同标准的excel
java·服务器·excel
hgz07102 小时前
堆内存分区
java·开发语言·jvm
索荣荣2 小时前
SpringBoot Starter终极指南:从入门到精通
java·开发语言·springboot
独断万古他化2 小时前
【Spring 事务】事务隔离级别与事务传播机制:从理论到业务落地实操
java·后端·spring·事务隔离·事务传播
苏涵.2 小时前
三种工厂设计模式
java
嗯嗯**2 小时前
Neo4j学习3:Java连接图库并执行CQL
java·学习·spring·neo4j·图数据库·驱动·cql