Docker离线安装
一、前言:为什么需要 Docker 离线安装?
在实际生产环境中,很多服务器出于安全合规要求或网络隔离限制,无法直接访问互联网。而 Docker 默认的在线安装方式依赖网络拉取镜像和依赖包,这就导致离线环境下的部署成为难题。本文将详细介绍 Linux 系统(CentOS 7+/Ubuntu 16.04+)中 Docker 的离线安装方案,涵盖镜像下载、文件迁移、服务配置、验证测试全流程,帮助大家在无网络环境中快速部署 Docker 服务。
二、前置知识:离线安装核心逻辑
Docker 离线安装的本质是 “提前在联网环境备好所有依赖资源,再迁移到离线服务器部署”,核心资源包括:
- Docker 引擎离线包(.tar.gz格式,包含 docker、dockerd 等核心命令);
- 系统服务配置文件(使 Docker 以系统服务形式运行);
- 可选资源:Docker Compose 二进制文件、常用容器镜像离线包。
三、第一步:联网环境准备离线资源
所有离线资源需在能访问互联网的机器上提前下载,建议选择与目标服务器架构一致的系统(如 x86_64/arm64),避免兼容性问题。
3.1 下载 Docker 引擎离线包
Docker 官方提供了静态二进制离线包,无需依赖其他系统库,兼容性更强:
# 1. 访问官方下载地址选择对应版本:https://download.docker.com/linux/static/stable/
# 2. 以Linux x86_64架构、24.0.7稳定版为例,执行下载命令:
wget https://download.docker.com/linux/static/stable/x86_64/docker-24.0.7.tgz
- 下载完成后,得到文件:docker-24.0.7.tgz(约 50MB 左右)。
3.2 下载 Docker Compose(可选)
Docker Compose 是 Docker 官方的容器编排工具,需单独下载二进制文件:
# 下载最新稳定版(可替换为官网最新版本号,地址:https://github.com/docker/compose/releases)
wget https://github.com/docker/compose/releases/download/v2.21.0/docker-compose-linux-x86_64 -O docker-compose
- 下载完成后,得到文件:docker-compose(约 15MB 左右)。
3.3 导出常用容器镜像(可选)
如果离线服务器需要预装 Nginx、CentOS 等基础镜像,可提前在联网环境拉取并导出:
# 1. 拉取镜像
docker pull centos:7
docker pull nginx:latest
# 2. 导出镜像为.tar文件(便于离线导入)
docker save -o centos7.tar centos:7
docker save -o nginx.tar nginx:latest
导出后得到镜像包:centos7.tar、nginx.tar。
3.4 打包离线资源
将所有下载 / 导出的文件整理到一个目录,便于后续迁移:
# 创建离线资源目录
mkdir -p /opt/docker-offline-resources
# 移动所有文件到该目录
mv docker-24.0.7.tgz docker-compose centos7.tar nginx.tar /opt/docker-offline-resources/
# 可选:打包成压缩包(减少传输体积)
tar -zcvf docker-offline-packages.tar.gz /opt/docker-offline-resources/
四、第二步:迁移离线资源到目标服务器
通过 U 盘、SCP、内网文件服务器等方式,将打包好的docker-offline-packages.tar.gz(或/opt/docker-offline-resources目录下的所有文件)拷贝到离线服务器的/opt目录下。
示例:SCP 传输(联网机器执行)
# 格式:scp 本地文件 目标服务器IP:目标目录
scp /opt/docker-offline-packages.tar.gz root@192.168.1.100:/opt/
目标服务器 IP 替换为实际离线服务器地址,输入密码后即可完成传输。
五、第三步:离线服务器安装 Docker
5.1 解压离线资源
登录离线服务器,进入资源目录并解压:
# 进入目录
cd /opt
# 若为压缩包,先解压(非压缩包可跳过)
tar -zxvf docker-offline-packages.tar.gz
# 进入资源文件夹
cd /opt/docker-offline-resources
5.2 安装 Docker 引擎核心命令
将 Docker 离线包中的核心命令拷贝到系统全局路径(/usr/bin),确保全局可执行:
# 解压Docker离线包
tar -zxvf docker-24.0.7.tgz
# 拷贝核心命令到/usr/bin
cp docker/* /usr/bin/
# 验证命令是否可用(显示版本号即为成功)
docker --version
预期输出:Docker version 24.0.7, build xxx。
5.3 配置 Docker 系统服务(关键步骤)
Docker 需要以系统服务形式运行,才能实现开机自启、后台稳定运行,需手动创建systemd服务配置文件:
# 创建docker.service文件
vi /etc/systemd/system/docker.service
粘贴以下配置内容(适配 CentOS 7+/Ubuntu 16.04+,兼容大多数场景):
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
# 启动命令(关闭SELinux,允许本地私有仓库,根据实际需求调整)
ExecStart=/usr/bin/dockerd --selinux-enabled=false --insecure-registry=127.0.0.1
ExecReload=/bin/kill -s HUP $MAINPID
# 权限配置:允许无限文件句柄、进程数
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Restart=always # 服务异常时自动重启
RestartSec=5
[Install]
WantedBy=multi-user.target
- 配置说明:--selinux-enabled=false关闭 SELinux(CentOS 系统默认开启,不关闭可能导致权限问题);--insecure-registry允许访问未配置 HTTPS 的私有镜像仓库,如需添加多个,用逗号分隔(如192.168.1.0/24)。
5.4 启动 Docker 服务并设置开机自启
# 1. 重新加载systemd配置(使新创建的docker.service生效)
systemctl daemon-reload
# 2. 启动Docker服务
systemctl start docker
# 3. 设置开机自启(避免服务器重启后需手动启动)
systemctl enable docker
# 4. 验证服务状态
systemctl status docker
- 预期输出:active (running) 表示服务正常运行;若显示failed,需通过journalctl -u docker -f查看日志排查问题。
5.5 安装 Docker Compose(可选)
如果需要使用 Docker Compose 编排容器,执行以下命令安装:
# 1. 给二进制文件添加执行权限
chmod +x docker-compose
# 2. 移动到/usr/bin目录(全局可执行)
mv docker-compose /usr/bin/
# 3. 验证安装
docker-compose --version
预期输出:Docker Compose version v2.21.0。
5.6 导入容器镜像(可选)
若提前导出了镜像离线包,执行以下命令导入:
# 导入CentOS 7镜像
docker load -i centos7.tar
# 导入Nginx镜像
docker load -i nginx.tar
# 验证镜像是否导入成功
docker images
- 预期输出:列表中显示centos:7和nginx:latest即为成功。
六、第四步:验证 Docker 离线安装效果
安装完成后,通过简单的容器运行测试 Docker 是否正常工作:
# 运行一个Nginx容器(若已导入Nginx镜像)
docker run -d -p 80:80 --name test-nginx nginx:latest
# 查看容器运行状态
docker ps
# 访问测试(本地访问或服务器IP访问)
curl http://localhost
- 若docker ps显示容器状态为Up,且curl能返回 Nginx 默认页面,说明 Docker 离线安装完全成功。
七、常见问题排查
7.1 启动 Docker 服务提示 “权限拒绝”
- 原因:SELinux 未关闭或文件权限不足。
- 解决:执行setenforce 0临时关闭 SELinux(永久关闭需修改/etc/selinux/config文件);给 Docker 命令添加权限:chmod +x /usr/bin/docker*。
7.2 容器启动失败,日志显示 “no space left on device”
- 原因:服务器磁盘空间不足(Docker 镜像和容器需占用一定空间)。
- 解决:清理无用文件(rm -rf /tmp/*),或通过docker system prune清理 Docker 缓存(若已安装 Docker),确保至少预留 10G 可用空间。
7.3 Docker 命令提示 “command not found”
- 原因:核心命令未拷贝到/usr/bin目录,或拷贝失败。
- 解决:重新执行cp docker/* /usr/bin/,并验证/usr/bin目录下是否存在docker、dockerd、docker-containerd等文件。
7.4 端口被占用导致容器无法启动
- 原因:启动容器时映射的端口(如 80 端口)已被其他服务占用。
- 解决:更换映射端口(如-p 8080:80),或通过netstat -tulnp | grep 80查找占用端口的服务并停止。
八、总结
Docker 离线安装的核心是 “提前备好资源,精准迁移配置”,整个流程无需依赖互联网,适合内网服务器、隔离环境等场景。关键要点包括:
- 确保离线包与服务器架构一致(x86_64/arm64);
- 系统服务配置文件需适配systemd系统;
- 权限配置和端口放行是避免启动失败的关键;
- 安装后通过实际容器运行验证效果。
按照本文步骤操作,即可在离线环境中快速部署稳定的 Docker 服务,为后续容器化应用部署打下基础。如果遇到其他问题,欢迎在评论区交流讨论!
更多推荐
所有评论(0)