如何在不联网的Ubuntu 24系统上独立安装Docker?

摘要:一、为什么要离线安装docker 使用二进制发行包离线安装Docker的主要原因是针对特定行业的云平台,如地方政务云、教育云或其他特种行业云平台,这些平台上的云主机往往由于安全政策或网络隔离的要求,无法直接访问互联网。因此,通过下载Dock
一、为什么要离线安装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 本文原始发布地址:http://www.omfox.cn