在离线的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
相关推荐
闲云自留地11 分钟前
K8s 的记忆大脑!ETCD 集群部署、etcdctl 命令与备份恢复全通关
容器·kubernetes·etcd
讯捷蓝达22 分钟前
戴尔R720xd服务器卡死在 “Configuring Memory...Done“,换了内存还是卡?问题根本不在内存
运维·服务器
爱和冰阔落3 小时前
【Linux网络】TCP 服务器如何并发处理多个客户端?从 fork、僵尸进程到双重 fork
linux·运维·服务器·网络
lisanmengmeng3 小时前
alertmanger 标签 rules 打上分组标签
linux·运维·服务器
Android系统攻城狮4 小时前
Linux FFmpeg深度解析之av_write_frame调用流程与实战(三十三)
linux·运维·服务器·ffmpeg·音视频进阶·ffmpeg音视频
上火的金鱼妹4 小时前
k8s生产实际问题排查(网关,数据库读写等)
运维·服务器
孙克旭_4 小时前
k8s基础组件与创建资源
运维·docker·容器·kubernetes
孙克旭_5 小时前
云原生基础之Containerd容器运行时
运维·云原生
分布式存储与RustFS5 小时前
RustFS 自建对象存储实战目录:110 篇按场景分类(持续更新)
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
无忧_wy5 小时前
MoneyPrinterTurbo 自动化视频生成实战指南
运维·人工智能·自动化·音视频