Docker 离线安装
在某些生产环境或内网服务器中,无法直接访问互联网下载软件包。本文将详细介绍如何在 无网络连接 的 Linux 系统上,通过离线方式安装 Docker 引擎 和 Docker Compose,并提供一键安装与卸载脚本。
📦 所需文件清单
在开始安装前,请确保你已准备好以下三个文件,并统一放置在 package/ 目录下:
docker-<version>.tgz:Docker 引擎二进制压缩包(例如docker-28.3.3.tgz)docker-compose-linux-x86_64:Docker Compose 可执行文件docker.service:Systemd 服务配置文件
💡 提示:所有文件应打包为
install-docker-<version>.tar,便于分发与部署。
🔽 获取安装包(在有网络的机器上操作)
1. 下载 Docker 引擎
Docker 官方提供静态编译的二进制包,适用于大多数 Linux 发行版:
# 查看所有版本
https://download.docker.com/linux/static/stable/x86_64/# 直接下载指定版本(示例)
wget https://download.docker.com/linux/static/stable/x86_64/docker-28.3.3.tgz
✅ 推荐使用稳定版本(如 27.x、28.x),避免使用过新或过旧的版本。
2. 下载 Docker Compose
Docker Compose 的二进制文件托管在 GitHub Releases:
# 示例:下载 v2.40.1 版本
wget https://github.com/docker/compose/releases/download/v2.40.1/docker-compose-linux-x86_64
⚠️ 注意:Docker Compose v2 以后以插件形式集成到
docker compose命令中,但为兼容性考虑,本文仍使用独立的docker-compose二进制文件。
3. 创建 docker.service 文件
创建 systemd 服务文件,用于管理 Docker 守护进程:
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecStartPost=/sbin/iptables -I FORWARD -s 0.0.0.0/0 -j ACCEPT
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=5
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process
OOMScoreAdjust=-1000[Install]
WantedBy=multi-user.target
🔒 此配置已优化资源限制与安全策略,适用于生产环境。
🛠️ 安装脚本:install-docker.sh
将以下脚本与上述三个文件一起打包。在目标服务器上执行即可完成安装。
#!/usr/bin/env bashsetenforce 0 2>&1set -esed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/configchmod a+x ./package/*docker_package=$(find . -name "*docker*.tgz" | grep -oE '[^/]+\.tgz$')if [ "$EUID" -ne 0 ]then echo "Please use ROOT user"exit
fifunction install_docker() {if which docker >/dev/null; thenecho -e "---------- docker has installed ----------"elseecho -e "---------- install Docker ----------"tar -zxf ./package/$docker_package -C ./package/cp -f ./package/docker/* /usr/bin/cp -f ./package/docker.service /usr/lib/systemd/system/chmod a+x /usr/bin/docker*chmod 754 /usr/lib/systemd/system/docker.serviceecho -e "---------- Start Docker ----------"systemctl daemon-reload 2>&1systemctl start docker 2>&1systemctl enable docker 2>&1 fi
}function install_docker_compose() {if which docker-compose >/dev/null; thenecho -e "---------- docker-compose has installed ----------"elif which docker compose >/dev/null; thenecho -e "---------- docker compose has installed ----------"elseecho -e "---------- install docker-compose ----------" cp -f ./package/docker-compose-linux-x86_64 /usr/bin/docker-composefi
}install_docker
install_docker_composeecho "Docker 离线安装完成!"
🧹 卸载脚本:uninstall-docker.sh
如需清理环境,可使用以下卸载脚本:
#!/usr/bin/env bash
set -e
container_runtime=docker
if [[ -f /usr/lib/systemd/system/${container_runtime}.service ]]; then
systemctl stop ${container_runtime} 2>&1
systemctl disable ${container_runtime}
firm -f /usr/bin/{containerd,containerd-shim,containerd-shim-runc-v2,ctr,docker,docker-compose,dockerd,docker-init,docker-proxy,runc,nerdctl}
rm -f /usr/lib/systemd/system/${container_runtime}.serviceecho "Docker 已卸载完成"
📦 打包与部署流程
-
在有网络的机器上准备安装包:
mkdir -p install-docker/package cp docker-28.3.3.tgz install-docker/package/ cp docker-compose-linux-x86_64 install-docker/package/ cp docker.service install-docker/package/ cp install-docker.sh install-docker/ cp uninstall-docker.sh install-docker/ -
打包:
tar -czf install-docker-28.tar.gz install-docker/ -
将压缩包拷贝到目标服务器,并执行:
tar -xzf install-docker-28.tar.gz cd install-docker sudo bash install-docker.sh
✅ 验证安装
docker --version
docker-compose --version
systemctl status docker
若输出版本信息且服务状态为 active (running),说明安装成功!
📝 小结
本文提供了一套完整、可复用的 Docker 离线安装方案,适用于内网、安全隔离或无外网访问权限的生产环境。通过标准化脚本与文件结构,可大幅降低部署复杂度,提升运维效率。
🌐 参考链接:
- Docker 官方静态包下载
- Docker Compose Releases
