背景
内部网络安装Docker,安装步骤如下
参考
环境
Ubuntu24.04
下载
以docker 24.0.9 x86_64和docker-compose-linux-x86_64 为例
- https://download.docker.com/linux/static/stable/aarch64/docker-24.0.9.tgz
- https://github.com/docker/compose/releases/download/v2.24.7/docker-compose-linux-x86_64
准备
- 预先在联网服务器下载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)
- 下载的包
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
- 打包
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
部署
- 拷贝docker文件
bash
cp docker/* /usr/bin/
cp docker-compose-linux-x86_64 /usr/bin/docker-compose
chmod +x docker-compose
- 解压安装iptables
bash
tar -zxvf docker-offline-deps-ubuntu24.tgz
- 安装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
- 简化版
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
- 完整版
- 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
启动
- 简化版
bash
# 重新加载systemd配置
systemctl daemon-reload
# 启动Docker服务
systemctl start docker
# 设置Docker开机自启
systemctl enable docker
- 完整版
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
- 查看服务状态
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