Linux 内网环境离线安装 Docker(含 docker-compose)
在企业内网隔离环境中,服务器无法直接连接互联网,此时需通过离线方式安装 Docker。本文介绍基于 Ubuntu 等 Linux 系统的离线安装步骤,包含 docker-compose 部署方法。
一、前期准备:下载所需文件
所有文件需提前下载到能联网的电脑,再拷贝到内网服务器。
1. Docker 离线安装包
访问官方静态发布页面:https://download.docker.com/linux/static/stable/
- 根据服务器架构选择目录(通常为 x86_64)。
- 选择版本压缩包(如
docker-29.1.3.tgz),后缀为 .tgz。
- 将压缩包拷贝至内网服务器指定目录(如
~/docker)。
2. docker-compose 二进制文件
如需编排多个容器,需安装 docker-compose。
二、服务器上配置文件:脚本与权限设置
进入 Docker 安装包所在目录,创建关键配置与脚本文件。
1. 创建 docker.service 文件
新建文件命令:touch docker.service
内容如下:
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
2. 创建安装脚本
新建脚本文件:touch install.sh
复制以下内容:
#!/bin/sh
echo '解压 tar 包......'
tar -xvf $1 --overwrite
echo '将 docker 目录移到/usr/bin 目录下.....'
cp docker/* /usr/bin/
echo '将 docker.service 移到/etc/systemd/system/ 目录.....'
cp docker.service /etc/systemd/system/
echo '添加文件权限.....'
chmod +x /etc/systemd/system/docker.service
echo '重新加载配置文件.....'
systemctl daemon-reload
echo '启动 docker.....'
systemctl start docker
echo '设置开机自启.....'
systemctl enable docker.service
echo 'docker 安装成功.....'
docker -v
3. 创建卸载脚本
新建卸载脚本:touch uninstall.sh
复制以下内容:
#!/bin/sh
echo '删除 docker.service......'
rm -f /etc/systemd/system/docker.service
echo '删除 docker 文件......'
sudo rm -rf /usr/bin/docker*
sudo rm -rf /usr/bin/containerd*
sudo rm -rf /var/run/docker*
sudo rm -rf /usr/local/bin/docker-compose
sudo rm -rf /var/lib/docker*
sudo rm -rf /var/lib/containerd*
echo '重新加载配置文件'
systemctl daemon-reload
echo '卸载成功...'
4. 给脚本赋权限
chmod +x install.sh uninstall.sh
三、一键安装 Docker:执行脚本
使用 root 权限执行安装脚本,参数为下载的 Docker 压缩包名称:
sudo ./install.sh docker-29.1.3.tgz
若看到类似输出,说明安装成功:
docker 安装成功.....
Docker version 28.4.0, build d8eb465
四、测试 Docker:加载镜像与启动容器
离线环境无法在线拉取镜像,需从外网服务器导出并导入。
1. 从外网服务器导出镜像
在可联网 Linux 服务器上操作:
docker pull nginx:1.21.5
docker save -o nginx.tar nginx:1.21.5
2. 拷贝镜像到内网服务器
将生成的 nginx.tar 文件传输至内网服务器。
3. 内网服务器加载镜像
sudo docker load -i nginx.tar
4. 查看镜像与启动容器
sudo docker images
sudo docker run -p 80:80 nginx:1.21.5
5. 验证服务
浏览器访问服务器 IP(如 http://192.168.1.100),显示 Nginx 默认页面即表示成功。
五、配置 Docker 用户组
避免每次执行命令都需 sudo。
1. 查看是否存在 docker 用户组
getent group docker
2. 不存在则创建用户组
sudo groupadd docker
3. 将当前用户添加到 docker 组
sudo usermod -aG docker your_username
4. 生效用户组配置
newgrp docker
六、离线安装 docker-compose
1. 拷贝二进制文件
sudo mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
2. 赋予权限
sudo chmod +x /usr/local/bin/docker-compose
3. 验证安装
docker-compose --version
输出示例:Docker Compose version v2.5.0
七、常见问题解决
- 执行脚本提示'权限不够':确保使用
sudo 或切换至 root 用户。
- 启动 Docker 失败:检查
docker.service 文件内容是否完整。
- 加载镜像提示'no space left on device':磁盘空间不足,请清理无用文件。
- 非 root 用户执行报错:检查是否配置了 docker 用户组并执行
newgrp docker 生效。
总结
离线安装 Docker 的核心在于'提前准备文件 + 脚本自动化部署'。虽比在线安装多步准备工作,但按步骤操作即可高效完成内网环境部署。