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

相关推荐
liangbo73 分钟前
Spring系列11:切点表达式
java·spring
30955666620 分钟前
股票接口返回 404 与空数组的排查笔记:证书状态与级别参数
java·笔记·python·ios·iphone·股票数据api·股票数据接口
nice_lcj52024 分钟前
MySQL 存储引擎入门:InnoDB 和 MyISAM 到底怎么选
java·数据库·mysql·面试·innodb·存储引擎·myisam
文丑颜不良啊39 分钟前
LeetCode2861~2880题目解析
java·leetcode
装不满的克莱因瓶1 小时前
设计模式之策略模式核心概念和应用场景
java·后端·设计模式·架构·系统架构·策略模式
晴天的雨.9921 小时前
【C++】继承篇
java·开发语言·c++
SomeOtherTime1 小时前
第 1 讲:内存布局与所有权解剖——栈帧、胖指针与“移动/拷贝”在汇编层面的真实面目
java·开发语言·汇编
qq_406981031 小时前
c++ lamda(三)Lambda表达式
java·前端·c++
头发还在的女程序员1 小时前
Java在线租房系统源码解析:Spring Boot+Vue 3+UniApp房源管理与预约看房方案
java·vue.js·spring boot·租房小程序·租房系统·租房软件
FYKJ_20101 小时前
springboot同人周边订单管理系统48955-计算机毕业设计、课程设计
java·javascript·vue.js·spring boot·django·php·课程设计