在离线的Ubuntu机器中安装docker,具体如下:
1、在有网络的机器中下载docker压缩包
https://download.docker.com/linux/static/stable/x86_64/

如下载:
2、拷贝到离线的机器中,然后解压这个包
bash
tar -zxvf docker-28.5.1.tgz

3、移动docker中的文件到系统目录中
bash
sudo cp docker/* /usr/bin/
4、授权
bash
sudo chmod +x /usr/bin/docker*
sudo chmod +x /usr/bin/containerd*
sudo chmod +x /usr/bin/runc
5、创建 systemd 服务
当然也可以查看文件是否存
bash
sudo cat /etc/systemd/system/docker.service
bash
sudo vi /etc/systemd/system/docker.service
6、写入docker.service 文件内容
bash
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network.target containerd.service
Requires=containerd.service
[Service]
Type=notify
ExecStart=/usr/bin/dockerd \
--host=unix:///var/run/docker.sock \
--exec-opt native.cgroupdriver=systemd \
--log-driver=json-file \
--log-opt max-size=100m \
--log-opt max-file=3 \
--storage-driver=overlay2
ExecReload=/bin/kill -s HUP $MAINPID
Restart=always
RestartSec=5
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
Delegate=yes
KillMode=process
[Install]
WantedBy=multi-user.target
7、创建 containerd 服务
bash
sudo vi /etc/systemd/system/containerd.service
写入内容
bash
[Unit]
Description=containerd container runtime
After=network.target
[Service]
ExecStart=/usr/bin/containerd
Restart=always
Delegate=yes
KillMode=process
[Install]
WantedBy=multi-user.target
8、systemd 生效
bash
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
9、启动服务
bash
sudo systemctl enable containerd
sudo systemctl enable docker
sudo systemctl start containerd
sudo systemctl start docker
10、查看安装
bash
docker version
bash
docker info
或是使用管理员验证
bash
sudo docker version
sudo docker info
其他内容:
Docker 实际是通过这个文件通信:/var/run/docker.sock
看权限:
ls -l /var/run/docker.sock
正常应该类似:
srw-rw---- 1 root docker ... docker.sock
👉 说明:
- 属主:root
- 属组:docker
- 权限:660
👉 结论:
只有 root 或 docker 组用户才能访问
创建 docker 组(如果没有)
sudo groupadd docker
把当前用户加入 docker 组
sudo usermod -aG docker 用户名
👉 注意:
-aG不能写错(否则会覆盖用户组)
权限生效
newgrp docker
查看权限
groups
重启docker服务
bash
sudo systemctl restart docker
再使用普通用户查看
docker version
docker info
优化内容(建议)
1️⃣ 配置 daemon.json
bash
sudo mkdir -p /etc/docker
sudo vi /etc/docker/daemon.json
推荐配置:
bash
{
"registry-mirrors": [],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
},
"storage-driver": "overlay2",
"data-root": "/data/docker",
"insecure-registries": [],
"live-restore": true
}
👉 说明:
data-root:避免系统盘爆满(生产必做)live-restore:docker重启不中断容器log:防止日志撑爆磁盘
2️⃣ 创建数据目录
bash
sudo mkdir -p /data/docker
sudo chmod 711 /data/docker
3️⃣ 非 root 用户使用 Docker
bash
sudo groupadd docker
sudo usermod -aG docker $USER
生效:
bash
newgrp docker
4️⃣ 防火墙 & 内核参数(关键)
bash
sudo modprobe overlay
sudo modprobe br_netfilter
bash
sudo vi /etc/sysctl.conf
添加:
bash
net.bridge.bridge-nf-call-iptables=1
net.ipv4.ip_forward=1
生效:
bash
sudo sysctl -p