在离线的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
相关推荐
潘正翔6 小时前
k8s进阶_Harbor镜像仓库
git·云原生·容器·kubernetes·gitee·github
江湖有缘6 小时前
Docker实战 | 使用Docker部署Donetick任务与家务管理应用
运维·docker·容器
流星白龙6 小时前
【Docker】4.NameSpace空间隔离实战
java·运维·docker
有续技术7 小时前
哈斯 (Haas) 机床 IP、端口号配置内容总结
运维·服务器
小张同学a.7 小时前
LAMP架构2
linux·运维·网络·架构·负载均衡
千河殇 多想和她7 小时前
如何在Reaonix中使用CodeGraph以及CodeGraph效果实测经验分享
linux·运维·ubuntu
VortMall7 小时前
出海引流运维双升级|VortMall微服务商城系统v1.3.12 升级更新
运维·微服务·facebook
心念枕惊7 小时前
新写了个直播录制工具,可录制抖音快手斗鱼直播
运维·服务器·数据库
躺不平的理查德7 小时前
CMAKE备忘录
linux·运维·服务器
9624567 小时前
跨域与私有网络访问限制排查实录
运维·服务器·网络