本文最后更新于 1 分钟前,文中所描述的信息可能已发生改变。
在某些生产环境中,服务器无法连接互联网,需要采用离线方式安装Docker。本文详细介绍Docker离线安装的完整步骤,包括二进制文件下载、安装配置以及系统服务注册,帮助运维人员在离线环境下成功部署Docker。
离线安装概述
离线安装Docker适用于以下场景:
- 内网环境或安全要求较高的生产环境
- 无法访问外网或需要严格网络隔离的服务器
- 需要离线部署容器化应用的场景
与在线安装相比,离线安装需要手动下载Docker二进制文件并配置系统服务,但能够保证在离线环境下正常运行。
一、安装步骤
1. 下载Docker二进制文件
从Docker官方网站下载适合您操作系统版本的Docker离线安装包。
下载地址:
- Docker官方GitHub Releases:https://github.com/moby/moby/releases
- 或者从有网络环境的机器上下载对应版本的Docker二进制文件
注意事项:
- 根据服务器架构选择正确的版本(如 x86_64、ARM64等)
- 建议下载稳定版本,避免使用测试版本
- 下载完整的Docker二进制文件包,通常为
.tgz格式
2. 上传安装包到服务器
使用FTP、SCP或其他文件传输工具,将下载的Docker安装包上传到目标服务器。
使用SCP上传示例:
scp docker-<version>.tgz user@server:/tmp/使用FTP上传: 如果服务器支持FTP服务,可以使用FTP客户端工具上传文件。
3. 解压安装包
在服务器上,使用以下命令解压Docker安装包:
cd /tmp
tar zxf docker-<version>.tgz请将 <version> 替换为您下载的Docker版本号。
解压后,您会看到一个包含Docker二进制文件的目录,通常包含以下文件:
dockerd:Docker守护进程docker:Docker客户端docker-proxy:网络代理工具containerd:容器运行时containerd-shim:容器运行时shimrunc:容器运行时- 其他相关工具
4. 将Docker可执行文件复制到系统路径
将解压后的Docker可执行文件复制到 /usr/bin/ 目录,以便系统能够直接运行Docker命令:
sudo cp docker/* /usr/bin/或者,如果您希望更规范地安装,可以将文件复制到 /usr/local/bin/:
sudo cp docker/* /usr/local/bin/验证文件复制:
which docker
docker --version如果命令能够正常执行并显示版本信息,说明文件复制成功。
5. 创建Docker配置目录
创建Docker运行时需要的目录:
sudo mkdir -p /etc/docker
sudo mkdir -p /var/lib/docker6. 启动Docker守护进程
使用以下命令启动Docker守护进程:
sudo dockerd &这个命令会在后台启动Docker守护进程。如果您想查看Docker的启动日志,可以去掉 & 符号:
sudo dockerd注意:直接使用 dockerd & 启动的方式在服务器重启后不会自动启动,需要配置为系统服务(见下文)。
7. 验证安装是否成功
执行以下命令,查看Docker信息,确认安装成功:
docker info如果能够正常显示Docker系统信息,说明安装成功。
测试Docker功能:
# 查看Docker版本
docker --version
# 查看Docker信息
docker info
# 测试运行一个容器(需要先拉取镜像,离线环境需要提前准备镜像)
docker run hello-world二、将Docker注册为系统服务
为了方便管理Docker服务,并确保服务器重启后Docker能够自动启动,需要将其注册为systemd系统服务。
1. 创建Docker服务文件
在 /etc/systemd/system/ 目录下创建 docker.service 文件:
sudo vi /etc/systemd/system/docker.service或者使用其他文本编辑器:
sudo nano /etc/systemd/system/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
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target配置说明:
Type=notify:使用systemd通知机制ExecStart:Docker守护进程的启动命令,路径根据实际安装位置调整Restart=on-failure:服务失败时自动重启WantedBy=multi-user.target:在系统多用户模式下启动
如果您的Docker安装在 /usr/local/bin/ 目录,需要将 ExecStart 路径修改为 /usr/local/bin/dockerd。
2. 重新加载systemd配置
创建服务文件后,需要重新加载systemd配置:
sudo systemctl daemon-reload3. 启动Docker服务
使用以下命令启动Docker服务:
sudo systemctl start docker4. 设置Docker服务开机自启
设置Docker服务在系统启动时自动启动:
sudo systemctl enable docker5. 管理Docker服务
查看服务状态:
sudo systemctl status docker停止Docker服务:
sudo systemctl stop docker重启Docker服务:
sudo systemctl restart docker取消开机自启(如果需要):
sudo systemctl disable docker查看服务日志:
sudo journalctl -u docker -f三、离线环境镜像管理
在离线环境中使用Docker时,还需要考虑镜像的管理:
1. 导出和导入镜像
在有网络的机器上导出镜像:
# 拉取需要的镜像
docker pull nginx:latest
# 导出镜像为tar文件
docker save -o nginx.tar nginx:latest
# 或者导出多个镜像
docker save -o images.tar nginx:latest redis:latest mysql:latest在离线服务器上导入镜像:
# 导入单个镜像
docker load -i nginx.tar
# 导入多个镜像
docker load -i images.tar
# 验证镜像导入
docker images2. 使用私有镜像仓库
对于大量镜像的管理,建议搭建私有Docker镜像仓库(如Harbor、Registry等),在有网络的机器上推送镜像,在离线环境通过内网访问私有仓库。
四、常见问题排查
1. 权限问题
如果遇到权限错误,需要将当前用户添加到docker用户组:
sudo groupadd docker
sudo usermod -aG docker $USER然后重新登录或执行:
newgrp docker2. 启动失败
如果Docker服务启动失败,可以查看详细日志:
sudo journalctl -xe
sudo journalctl -u docker -n 50检查常见问题:
- 文件路径是否正确
- 磁盘空间是否充足
- SELinux或防火墙配置是否正确
3. 网络配置
如果需要在离线环境使用Docker网络功能,确保网络配置正确:
# 检查Docker网络
docker network ls
# 创建自定义网络
docker network create mynetwork总结
通过以上步骤,可以在离线环境下成功安装并配置Docker。关键步骤包括:
- 下载二进制文件:从官方渠道获取适合的Docker版本
- 安装二进制文件:将文件复制到系统路径
- 配置系统服务:创建systemd服务文件,实现自动管理
- 验证安装:通过命令测试Docker功能
- 镜像管理:通过导出导入或私有仓库管理镜像
离线安装Docker虽然步骤相对复杂,但能够满足内网环境或安全隔离场景的需求。建议在实际部署前在测试环境验证所有步骤,确保生产环境部署顺利。