Docker 笔记(九)--离线安装

背景

内部网络安装Docker,安装步骤如下

参考

  1. Docker官方x86_64下载网址
  2. Docker官方arm64下载网址
  3. Docker-compose Github下载

环境

Ubuntu24.04

下载

以docker 24.0.9 x86_64和docker-compose-linux-x86_64 为例

  1. https://download.docker.com/linux/static/stable/aarch64/docker-24.0.9.tgz
  2. https://github.com/docker/compose/releases/download/v2.24.7/docker-compose-linux-x86_64

准备

  1. 预先在联网服务器下载Ubuntu24.04需要的iptables
bash 复制代码
mkdir docker-offline-deps-ubuntu24 && cd docker-offline-deps-ubuntu24

apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances iptables | grep "^\w" | sort -u)
  1. 下载的包
bash 复制代码
root@tsx:/public/software/docker-offline-deps-ubuntu24# ll
total 3944
drwxr-xr-x 2 root root    4096 Aug 24 08:24 ./
drwxr-xr-x 4 root root      56 Aug 24 08:24 ../
-rw-r--r-- 1 root root   51014 Feb 12  2026 gcc-14-base_14.2.0-4ubuntu2~24.04.1_amd64.deb
-rw-r--r-- 1 root root  381328 Apr  8  2024 iptables_1.8.10-3ubuntu2_amd64.deb
-rw-r--r-- 1 root root 3262434 Jul 27 12:28 libc6_2.39-0ubuntu8.8_amd64.deb
-rw-r--r-- 1 root root   78392 Feb 12  2026 libgcc-s1_14.2.0-4ubuntu2~24.04.1_amd64.deb
-rw-r--r-- 1 root root   23342 Apr  8  2024 libip4tc2_1.8.10-3ubuntu2_amd64.deb
-rw-r--r-- 1 root root   23732 Apr  8  2024 libip6tc2_1.8.10-3ubuntu2_amd64.deb
-rw-r--r-- 1 root root   12272 Apr  8  2024 libmnl0_1.0.5-2build1_amd64.deb
-rw-r--r-- 1 root root   45218 Apr  8  2024 libnetfilter-conntrack3_1.0.9-6build1_amd64.deb
-rw-r--r-- 1 root root   14810 Apr  8  2024 libnfnetlink0_1.0.2-2build1_amd64.deb
-rw-r--r-- 1 root root   65986 Apr  8  2024 libnftnl11_1.2.6-2build1_amd64.deb
-rw-r--r-- 1 root root   35704 Apr  8  2024 libxtables12_1.8.10-3ubuntu2_amd64.deb
-rw-r--r-- 1 root root   13112 Nov  6  2022 netbase_6.4_all.deb
  1. 打包
bash 复制代码
tar -zcvf docker-offline-deps-ubuntu24.tgz docker-offline-deps-ubuntu24

安装

上传

bash 复制代码
root@tsx:/public/software/docker# ls
docker-24.0.9.tgz  docker-compose-linux-x86_64 docker-offline-deps-ubuntu24.tgz

解压

bash 复制代码
root@tsx:/public/software/docker# tar -zxvf docker-24.0.9.tgz
bash 复制代码
root@tsx:/public/software/docker# tree
.
├── docker
│   ├── containerd
│   ├── containerd-shim-runc-v2
│   ├── ctr
│   ├── docker
│   ├── docker-init
│   ├── docker-proxy
│   ├── dockerd
│   └── runc
├── docker-offline-deps-ubuntu24.tgz
├── docker-24.0.9.tgz
└── docker-compose-linux-x86_64

2 directories, 10 files

部署

  1. 拷贝docker文件
bash 复制代码
cp docker/* /usr/bin/
cp docker-compose-linux-x86_64 /usr/bin/docker-compose
chmod +x docker-compose
  1. 解压安装iptables
bash 复制代码
tar -zxvf docker-offline-deps-ubuntu24.tgz
  1. 安装iptables
bash 复制代码
dpkg -i *.deb

验证

bash 复制代码
root@tsx:/public/software/docker# docker version
Client:
 Version:           24.0.9
 API version:       1.43
 Go version:        go1.20.13
 Git commit:        2936816
 Built:             Thu Feb  1 00:47:46 2024
 OS/Arch:           linux/amd64
 Context:           default
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
bash 复制代码
root@tsx:/public/software/docker# docker-compose version
Docker Compose version v2.24.7
bash 复制代码
root@tsx:/public/software/docker-offline-deps-ubuntu24# iptables --version
iptables v1.8.10 (nf_tables)

配置

bash 复制代码
sudo vim /usr/lib/systemd/system/docker.service
  1. 简化版
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
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
# 老系统,注释以下选项
StartLimitBurst=3
StartLimitInterval=60s

[Install]
WantedBy=multi-user.target
  1. 完整版
  • docker.service
bash 复制代码
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target docker.socket firewalld.service containerd.service
Wants=network-online.target
# 注意,有两个前置服务(也可以注释取消)
Requires=docker.socket containerd.service

[Service]
Type=notify
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutStartSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process
OOMScoreAdjust=-500

[Install]
WantedBy=multi-user.target
  • docker.socket
bash 复制代码
vim /usr/lib/systemd/system/docker.socket
bash 复制代码
[Unit]
Description=Docker Socket for the API

[Socket]
ListenStream=/var/run/docker.sock
SocketMode=0660
SocketUser=root
SocketGroup=root

[Install]
WantedBy=sockets.target
  • containerd.service
bash 复制代码
/usr/lib/systemd/system/containerd.service 
bash 复制代码
[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network.target local-fs.target

[Service]
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/bin/containerd
Type=notify
Delegate=yes
KillMode=process
Restart=always
RestartSec=5
LimitNPROC=infinity
LimitCORE=infinity
LimitNOFILE=infinity
TasksMax=infinity
OOMScoreAdjust=-999

[Install]
WantedBy=multi-user.target

启动

  1. 简化版
bash 复制代码
# 重新加载systemd配置
systemctl daemon-reload

# 启动Docker服务
systemctl start docker

# 设置Docker开机自启
systemctl enable docker
  1. 完整版
bash 复制代码
# 重新加载systemd配置
systemctl daemon-reload

# 启动docker.socket
systemctl enable --now docker.socket

# 启动containerd.service
systemctl enable --now containerd.service

# 启动Docker服务
systemctl start docker 

# 设置Docker开机自启
systemctl enable docker
  1. 查看服务状态
bash 复制代码
systemctl status docker

● docker.service - Docker Application Container Engine
     Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: enabled)
     Active: active (running) since Mon 2026-08-24 08:49:14 UTC; 23s ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 8228 (dockerd)
      Tasks: 28
     Memory: 34.6M (peak: 35.8M)
        CPU: 324ms
     CGroup: /system.slice/docker.service
             └─8228 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
相关推荐
小小龙学IT12 小时前
Kubernetes 深度实践:架构、API 与避坑指南
容器·架构·kubernetes
cpolar技术支持14 小时前
外网测试机的异常传不回内网?自托管 Sentry,用 cpolar 打通错误上报链路
python·nginx·docker·cpolar·sentry
MrSYJ17 小时前
别人再问你路由表是啥,这篇文章摔它脸上
docker·云原生·kubernetes
羑悻17 小时前
穿越Docker内核迷雾:揭秘镜像分层存储的叠加态与卷挂载的多维空间穿梭技术
后端·docker·容器
for_ever_love__18 小时前
容器类型全家桶——list、tuple、dict、set 与推导式
python·容器·数据类型·大模型开发
筑梦之路19 小时前
docker-compose方式部署kafka集群(Kraft方式)——筑梦之路
docker·容器·kafka
JavaPub-rodert19 小时前
Docker 镜像地址总失效?基于 DockerHub 项目用 GitHub Actions 做一个自动检测状态页
docker·容器·github
天衍四九-19 小时前
Docker 进阶实战系列(一):容器镜像安全,最小镜像与非 Root 运行
安全·docker·eureka
天衍四九-20 小时前
Docker进阶实战系列(二):容器日志深度治理|驱动配置、自动切割、磁盘爆满彻底解决
docker·容器·eureka
sbjdhjd20 小时前
云安全 | Docker 容器逃逸复盘(一):从隔离边界到运行时链路,如何确认自己身处容器
网络安全·docker·云原生·容器·kubernetes·云计算·云安全