Docker离线安装完整指南

本文最后更新于 1 分钟前,文中所描述的信息可能已发生改变。

在某些生产环境中,服务器无法连接互联网,需要采用离线方式安装Docker。本文详细介绍Docker离线安装的完整步骤,包括二进制文件下载、安装配置以及系统服务注册,帮助运维人员在离线环境下成功部署Docker。

离线安装概述

离线安装Docker适用于以下场景:

  • 内网环境或安全要求较高的生产环境
  • 无法访问外网或需要严格网络隔离的服务器
  • 需要离线部署容器化应用的场景

与在线安装相比,离线安装需要手动下载Docker二进制文件并配置系统服务,但能够保证在离线环境下正常运行。

一、安装步骤

1. 下载Docker二进制文件

从Docker官方网站下载适合您操作系统版本的Docker离线安装包。

下载地址

注意事项

  • 根据服务器架构选择正确的版本(如 x86_64、ARM64等)
  • 建议下载稳定版本,避免使用测试版本
  • 下载完整的Docker二进制文件包,通常为 .tgz 格式

2. 上传安装包到服务器

使用FTP、SCP或其他文件传输工具,将下载的Docker安装包上传到目标服务器。

使用SCP上传示例

bash
scp docker-<version>.tgz user@server:/tmp/

使用FTP上传: 如果服务器支持FTP服务,可以使用FTP客户端工具上传文件。

3. 解压安装包

在服务器上,使用以下命令解压Docker安装包:

bash
cd /tmp
tar zxf docker-<version>.tgz

请将 <version> 替换为您下载的Docker版本号。

解压后,您会看到一个包含Docker二进制文件的目录,通常包含以下文件:

  • dockerd:Docker守护进程
  • docker:Docker客户端
  • docker-proxy:网络代理工具
  • containerd:容器运行时
  • containerd-shim:容器运行时shim
  • runc:容器运行时
  • 其他相关工具

4. 将Docker可执行文件复制到系统路径

将解压后的Docker可执行文件复制到 /usr/bin/ 目录,以便系统能够直接运行Docker命令:

bash
sudo cp docker/* /usr/bin/

或者,如果您希望更规范地安装,可以将文件复制到 /usr/local/bin/

bash
sudo cp docker/* /usr/local/bin/

验证文件复制

bash
which docker
docker --version

如果命令能够正常执行并显示版本信息,说明文件复制成功。

5. 创建Docker配置目录

创建Docker运行时需要的目录:

bash
sudo mkdir -p /etc/docker
sudo mkdir -p /var/lib/docker

6. 启动Docker守护进程

使用以下命令启动Docker守护进程:

bash
sudo dockerd &

这个命令会在后台启动Docker守护进程。如果您想查看Docker的启动日志,可以去掉 & 符号:

bash
sudo dockerd

注意:直接使用 dockerd & 启动的方式在服务器重启后不会自动启动,需要配置为系统服务(见下文)。

7. 验证安装是否成功

执行以下命令,查看Docker信息,确认安装成功:

bash
docker info

如果能够正常显示Docker系统信息,说明安装成功。

测试Docker功能

bash
# 查看Docker版本
docker --version

# 查看Docker信息
docker info

# 测试运行一个容器(需要先拉取镜像,离线环境需要提前准备镜像)
docker run hello-world

二、将Docker注册为系统服务

为了方便管理Docker服务,并确保服务器重启后Docker能够自动启动,需要将其注册为systemd系统服务。

1. 创建Docker服务文件

/etc/systemd/system/ 目录下创建 docker.service 文件:

bash
sudo vi /etc/systemd/system/docker.service

或者使用其他文本编辑器:

bash
sudo nano /etc/systemd/system/docker.service

在文件中添加以下内容:

ini
[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配置:

bash
sudo systemctl daemon-reload

3. 启动Docker服务

使用以下命令启动Docker服务:

bash
sudo systemctl start docker

4. 设置Docker服务开机自启

设置Docker服务在系统启动时自动启动:

bash
sudo systemctl enable docker

5. 管理Docker服务

查看服务状态

bash
sudo systemctl status docker

停止Docker服务

bash
sudo systemctl stop docker

重启Docker服务

bash
sudo systemctl restart docker

取消开机自启(如果需要):

bash
sudo systemctl disable docker

查看服务日志

bash
sudo journalctl -u docker -f

三、离线环境镜像管理

在离线环境中使用Docker时,还需要考虑镜像的管理:

1. 导出和导入镜像

在有网络的机器上导出镜像

bash
# 拉取需要的镜像
docker pull nginx:latest

# 导出镜像为tar文件
docker save -o nginx.tar nginx:latest

# 或者导出多个镜像
docker save -o images.tar nginx:latest redis:latest mysql:latest

在离线服务器上导入镜像

bash
# 导入单个镜像
docker load -i nginx.tar

# 导入多个镜像
docker load -i images.tar

# 验证镜像导入
docker images

2. 使用私有镜像仓库

对于大量镜像的管理,建议搭建私有Docker镜像仓库(如Harbor、Registry等),在有网络的机器上推送镜像,在离线环境通过内网访问私有仓库。

四、常见问题排查

1. 权限问题

如果遇到权限错误,需要将当前用户添加到docker用户组:

bash
sudo groupadd docker
sudo usermod -aG docker $USER

然后重新登录或执行:

bash
newgrp docker

2. 启动失败

如果Docker服务启动失败,可以查看详细日志:

bash
sudo journalctl -xe
sudo journalctl -u docker -n 50

检查常见问题:

  • 文件路径是否正确
  • 磁盘空间是否充足
  • SELinux或防火墙配置是否正确

3. 网络配置

如果需要在离线环境使用Docker网络功能,确保网络配置正确:

bash
# 检查Docker网络
docker network ls

# 创建自定义网络
docker network create mynetwork

总结

通过以上步骤,可以在离线环境下成功安装并配置Docker。关键步骤包括:

  1. 下载二进制文件:从官方渠道获取适合的Docker版本
  2. 安装二进制文件:将文件复制到系统路径
  3. 配置系统服务:创建systemd服务文件,实现自动管理
  4. 验证安装:通过命令测试Docker功能
  5. 镜像管理:通过导出导入或私有仓库管理镜像

离线安装Docker虽然步骤相对复杂,但能够满足内网环境或安全隔离场景的需求。建议在实际部署前在测试环境验证所有步骤,确保生产环境部署顺利。

Arthas工具使用详解:Java诊断利器实战指南
Ubuntu 24.04 LTS 离线安装 MySQL 8.0.44 完整指南