一、为什么要离线安装docker
使用二进制发行包离线安装Docker的主要原因是针对特定行业的云平台,如地方政务云、教育云或其他特种行业云平台,这些平台上的云主机往往由于安全政策或网络隔离的要求,无法直接访问互联网。因此,通过下载Docker的二进制发行包并进行离线安装,可以确保在这些受限环境中顺利部署Docker,同时满足安全性和合规性的需求。具体来说,这种方式可以带来以下几个方面的优势:
- 增强安全性:避免了云主机直接与互联网通信,减少了潜在的安全威胁,符合高安全标准的行业要求。
- 确保合规性:对于有严格网络监管要求的行业,如政务和教育领域,离线安装可以更好地遵守相关法律法规和行业规范。
- 控制版本一致性:通过手动下载和分发特定版本的Docker,可以在多个云主机上保持软件版本的一致性,便于管理和维护。
- 提高灵活性:在没有互联网连接的环境中,离线安装提供了灵活的解决方案,使得Docker的部署不受网络条件的限制。
二、安装部署环境
- 系统环境:Ubuntu24.04 LTS server
- 软件版本:Docker 27.3.1
注意: 该方法理论适用于所有系统为64位、系统内核版本为 2.6.32-431 以及更高版本的Linux系统,本文使用的机器CPU的X86架构,如果您使用的是ARM64(aarch64)架构CPU,将docker软件包更换为ARM64(aarch64)架构软件包即可。
目前作者安装实施过的操作系统包括:Ubuntu 18.04 LTS server、Ubuntu 20.04 LTS server、Ubuntu 22.04 LTS server、Ubuntu24.04 LTS server、RockLinux8、RockLinux9、CentOS7、CentOS8、OpenEuler22.03 LTS 、OpenEuler24.03 LTS、AnolisOS8、Kylinos V10 server、UOS V20 server(1050a/1050e/1060a/1060e/1070a/1070e)
三、安装步骤
1、下载 docker 二进制包并解压
# docker 官方下载链接,如果你所在网络环境下载速度慢可以使用其他国内镜像源下载
wget -c https://download.docker.com/linux/static/stable/x86_64/docker-27.3.1.tgz
# 国内镜像源
#wget -c https://mirrors.ustc.edu.cn/docker-ce/linux/static/stable/x86_64/docker-27.3.1.tgz
tar -xvf docker-27.3.1.tgz -C /usr/local/
2、创建进程管理文件
cat > /etc/systemd/system/containerd.service << EOF
[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network.target local-fs.target
[Service]
ExecStart=/usr/local/docker/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
EOF
cat > /etc/systemd/system/docker.service << EOF
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
Requires=docker.socket
[Service]
Environment="PATH=/usr/local/docker:/usr/sbin:\${PATH}"
Type=notify
ExecStart=/usr/local/docker/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecReload=/bin/kill -s HUP
TimeoutSec=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
EOF
cat > /etc/systemd/system/docker.socket << EOF
[Unit]
Description=Docker Socket for the API
[Socket]
ListenStream=/var/run/docker.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker
[Install]
WantedBy=sockets.target
EOF
3、创建docker配置文件
mkdir -p /etc/docker/
cat >/etc/docker/daemon.json<<EOF
{
"userland-proxy": true,
"userland-proxy-path": "/usr/local/docker/docker-proxy",
"dns": [
"114.114.114.114",
"8.8.8.8"
],
"bip" : "172.48.94.1/24",
"data-root":"/mnt/docker",
"log-driver":"json-file",
"log-opts": {
"max-size":"100m",
"max-file":"3"
}
}
EOF
注意
- userland-proxy、userland-proxy-path 两项内容必须有
- dns:设置容器内网络使用的DNS地址,可根据需要修改
- bip:docker网卡的IP地址,也是容器默认网络,可根据需要修改,要尽量避免使用网络中已经使用的网段,否则可能会导致部分或者全部用户无法访问容器内的业务。
- data-root:容器运行环境、镜像、网络、数据卷等相关信息的存放位置。
- log-driver、log-opts:日志相关的配置项,更具需要配置。
4、配置环境变量
cat >/etc/profile.d/docker.sh<< EOF
#/bin/bash
export PATH=/usr/local/docker:\${PATH}
EOF
ln -s /usr/local/docker/runc /usr/local/bin/runc
bash
5、添加 docker 用户和用户组
useradd -r -s /sbin/nologin -M docker
usermod -a -G docker root
6、启动 docker 服务
systemctl daemon-reload
systemctl enable containerd docker
systemctl restart containerd docker
本文原始发布地址:运维栈-点击跳转