Docker在Linux中离线部署

获取部署包

按照个人需求,通过官方网站下载需要的字节压缩包,笔者主要是linux/x86_64,操作系统为Ubuntu 22.04

复制下载链接,在Linux进行下载,此处为docker-28.4.0.tgz

bash 复制代码
wget https://download.docker.com/linux/static/stable/x86_64/docker-28.4.0.tgz

安装过程

下载到本地系统后,在下载目录进行解压。

bash 复制代码
tar -zxvf docker-28.4.0.tgz

解压之后,内容如下:

bash 复制代码
drwxr-xr-x 2 ggcy ggcy     4096 Sep  4 05:05 ./
drwxr-x--- 4 ggcy ggcy     4096 Sep 21 02:34 ../
-rwxr-xr-x 1 ggcy ggcy 41451704 Sep  4 05:05 containerd*
-rwxr-xr-x 1 ggcy ggcy 14065848 Sep  4 05:05 containerd-shim-runc-v2*
-rwxr-xr-x 1 ggcy ggcy 21242040 Sep  4 05:05 ctr*
-rwxr-xr-x 1 ggcy ggcy 43556144 Sep  4 05:05 docker*
-rwxr-xr-x 1 ggcy ggcy   708456 Sep  4 05:05 docker-init*
-rwxr-xr-x 1 ggcy ggcy  2458085 Sep  4 05:05 docker-proxy*
-rwxr-xr-x 1 ggcy ggcy 79364736 Sep  4 05:05 dockerd*
-rwxr-xr-x 1 ggcy ggcy 18443272 Sep  4 05:05 runc*

如果条件允许,拷贝当前文件夹中内容到/usr/bin 中,如果条件不允许,则可以添加到/usr/local/中,但是需要注意,拷贝到/usr/local 之后需要确保环境变量配置改路径,用于全局,此处笔者使用/usr/bin

bash 复制代码
sudo cp docker/* /usr/bin

拷贝之后,执行whereis dockerd 查看执行程序是否能够检索到。

bash 复制代码
~$ whereis dockerd
dockerd: /usr/bin/dockerd

查看版本。

bash 复制代码
~$ dockerd --version
Docker version 28.4.0, build 249d679

表明离线部署成功。

服务配置

docker 服务可以直接通过dockerd & 进行执行,但是实际生产环境中,多是服务自启,则需要将服务配置为服务自启,使用systemctl实现服务自启,以sudo 或者root 权限在/usr/lib/systemd/system/dockerd.service 目录中创建一个服务配置文件dockerd.service,命令行如下。

bash 复制代码
sudo vi /usr/lib/systemd/system/dockerd.service

按字母i键,进入insert模式,配置内容如下:

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
ExecStart=/usr/bin/dockerd #dockerd path
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target

配置后,按Esc键,退出insert 模式,输入:wq并回车,完成保存并退出。

执行daemon-reload重新加载systemd的服务配置文件。

bash 复制代码
sudo systemctl daemon-reload

启动服务。

bash 复制代码
sudo systemctl start dockerd

查看服务状态,服务状态running,并无其他异常输出表明服务运行成功,但此时Loaded: loaded (xxxx.service; enabled; vendor preset: enabled)disabled; vendor preset: enabled 表明服务并不是服务自启。

bash 复制代码
sudo systemctl status dockerd
● dockerd.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/dockerd.service; disabled; vendor preset: enabled)
     Active: active (running) since Sun 2025-09-21 22:15:55 CST; 6s ago
       Docs: https://docs.docker.com
   Main PID: 639 (dockerd)
      Tasks: 28 (limit: 19126)
     Memory: 128.0M
        CPU: 439ms
     CGroup: /system.slice/dockerd.service
             ├─639 /usr/bin/dockerd
             └─652 containerd --config /var/run/docker/containerd/containerd.toml

配置服务自启,避免系统重启后,服务未启动。

bash 复制代码
sudo systemctl enable dockerd
Created symlink /etc/systemd/system/multi-user.target.wants/dockerd.service → /lib/systemd/system/dockerd.service.

再次查看服务,Loaded: loaded (xxxx.service; enabled; vendor preset: enabled) 已经配置成功。

bash 复制代码
sudo systemctl status dockerd
● dockerd.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/dockerd.service; enabled; vendor preset: enabled)

配置Compose

为了后续简化容器的快速构建,可以安装docker compose,用于之后使用docker-compose.yml 实现一键构建,此处下载的是v2.39.4版本。
github 原始地址下载(可能得科学上网)。

bash 复制代码
wget https://github.com/docker/compose/releases/download/v2.39.4/docker-compose-linux-x86_64 -o docker-compose

github 代理地址,也可以使用自己手上有的其他代理地址。

bash 复制代码
wget https://hk.gh-proxy.com/https://github.com/docker/compose/releases/download/v2.39.4/docker-compose-linux-x86_64

下载完成后,可以在当前目录使用ls 和grep 进行查看,可以看到文件大小与github72.8MB` 基本一致。

bash 复制代码
ls -lh |grep docker-compose-linux-x86_64
-rw-r--r-- 1 ggcy ggcy  73M Sep 19 16:38 docker-compose-linux-x86_64

可以看到并没有执行权限,添加执行权限。

bash 复制代码
chmod +x ./docker-compose-linux-x86_64

拷贝执行程序到/usr/bin/中。

bash 复制代码
sudo cp ./docker-compose-linux-x86_64 /usr/bin/docker-compose

查看执行程序目录。

bash 复制代码
whereis docker-compose
docker-compose: /usr/bin/docker-compose

验证指令是否能够生效,输出如下,表明部署成功。

bash 复制代码
sudo docker-compose --version
Docker Compose version v2.39.4

常见问题

服务化配置失败request repeated too quickly,提示如下:

bash 复制代码
dockerd.service: Start request repeated too quickly.
Failed to start Docker Application Container Engine.

查看日志发现:

bash 复制代码
failed to load listeners: no sockets found via socket activation: make sure the service was started by systemd

解决办法如下,修改服务配置如下:

bash 复制代码
[Unit]
Description=Docker Application Container Engine Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
# simple
Type=simple
# execstart
ExecStart=/usr/bin/dockerd --host=unix://var/run/docker.sock --log-level=info
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutStartSec=0
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
Delegate=yes
KillMode=process
[Install]
WantedBy=multi-user.target
相关推荐
百年੭ ᐕ)੭*⁾⁾34 分钟前
docker使用neo4j
docker·容器·neo4j
峥无1 小时前
Linux系统编程基石:静态库·动态库·ELF文件·进程地址空间全景图
linux·运维·服务器
用户2367829801681 小时前
从 chmod 755 说起:Unix 文件权限到底是怎么算的?
linux
Strugglingler1 小时前
【systemctl 学习总结】
linux·systemd·systemctl·journalctl·unit file
春风有信2 小时前
【2026.05.01】Windows10安装Docker Desktop 4.71.0.0步骤及问题解决
运维·docker·容器
嵌入式×边缘AI:打怪升级日志3 小时前
100ASK-T113 Pro 开发板 Bootloader 完全开发指南
linux·ubuntu·bootloader
charlie1145141914 小时前
Linux 字符设备驱动:cdev、设备号与设备模型
linux·开发语言·驱动开发·c
handler014 小时前
Linux 内核剖析:进程优先级、上下文切换与 O(1) 调度算法
linux·运维·c语言·开发语言·c++·笔记·算法
zhouwy1134 小时前
Linux进程与线程编程详解
linux·c++
我星期八休息4 小时前
IT疑难杂症诊疗室:AI时代工程师Superpowers进化论
linux·开发语言·数据结构·人工智能·python·散列表