在离线的Ubuntu机器中安装docker

在离线的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
相关推荐
小张同学a.11 分钟前
Docker 容器实战 1—— docker 基础与镜像构建
linux·运维·docker·容器
大模型丫丫1 小时前
Hermes Agent:轻量级智能体框架实战指南
大数据·运维·服务器
考虑考虑1 小时前
kubectl命令
运维·后端·自动化运维
NJCloud1 小时前
Docker 容器技术入门:部署、核心概念与基础命令
运维·docker·容器
2601_962072332 小时前
docker自建rustdesk-server远程桌面
运维·docker·容器
Blockchina2 小时前
Codex 实战:从一句需求到可验收的 Linux 主机巡检脚本
运维·服务器·网络
2601_962218472 小时前
万象生鲜系统冷链物联网接入技术实现生鲜企业温控管理数字化
大数据·运维·微服务·云原生·架构
Best-Wishes2 小时前
BurpSuite Pro教育版在linux系统中配置
linux·运维·服务器·网络安全·burpsuite
pnoker2 小时前
从零部署 IoT DC3:四步快速启动实录
物联网·docker·部署
志栋智能3 小时前
从关联到因果:智能超自动化如何实现真正的根因分析定界
运维·自动化