码上焚香

Yahocen

Linux离线安装Docker过程

9
2025-12-29

准备离线安装包

确认机器架构

执行uname -m查看机器架构

获取压缩包

前往官方下载站根据机器架构进入对应目录下载最新版离线压缩包,并上传到服务器任意目录(例如/data/soft目录)

解压压缩包

执行 tar -zxvf docker-29.1.3.tgz 解压

安装 Docker

执行cp docker/* /usr/bin/将解压出来的docker文件内容拷贝或者移动到/usr/bin/目录下,执行 docker -v 查看可以看到版本号。

执行vi /etc/systemd/system/docker.service增加Docker 守护进程的 systemd 单元配置文件,内容如下:

[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中增加参数:-H tcp://0.0.0.0:2375
ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock --selinux-enabled=false --default-ulimit nofile=65536:65536
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

依次执行systemctl daemon-reload systemctl start docker systemctl status docker启动docker服务,并查看运行状态

Docker 服务管理相关命令

  • 启动 docker 服务:systemctl start docker

  • 查看 docker 服务的运行状态:systemctl status docker

  • 停止运行:systemctl stop docker

  • 重新启动:systemctl restart docker

  • 设置开机自动启动:systemctl enable docker

  • 禁用开机自动启动:systemctl disabled docker

  • 查看自动启动状态:systemctl is-enabled docker.service

  • 查看 docker 版本号:docker -v

修改Docker默认存储路径

默认情况下docker安装的所有镜像储存在 /var/lib/docker 目录下,可以使用 docker info | grep 'Docker Root Dir' 命令查看,此目录默认挂载到跟分区下,如果根分区比较小可以根据以下步骤将其移动到其他数据盘:

  1. 执行 systemctl stop docker.service 停止docker服务

  2. 创建新目录用于存储 Docker 数据,例如 mkdir -p /data/docker (请替换成自己想要存放的目录)

  3. 执行 rsync -avz /var/lib/docker/* /data/docker//var/lib/docker 目录下的所有数据复制到新目录

  4. 修改 /etc/docker/daemon.json 配置文件,此文件默认不会自动创建,可以执行mkdir -p /etc/docker && cd /etc/docker && vi daemon.json新建此文件,并增加一下内容:

{
  "data-root": "/data/docker"
}
  1. 执行systemctl start docker启动docker服务

  2. 执行docker info | grep 'Docker Root Dir'确认配置是否生效

  3. 确保各项服务正常后,可以删除之前的文件 rm -rf /var/lib/docker

离线加载容器

常用的容器都会提供各种架构的版本,比如下载Arm64版本的Redis,操作如下:

  1. 找台联网并安装过docker的机器(任意架构)执行 docker pull --platform linux/arm64/v8 docker.m.daocloud.io/redis:8.0.3

  2. 将拉取的容器保存在离线文件:docker save -o /data/redis-8.0.3.tar docker.m.daocloud.io/redis:8.0.3

  3. 上传到目标离线机器,执行docker load -i redis-8.0.3.tar加载容器