在国产信创和内网环境中,为银河麒麟V10服务器离线安装Docker是一项高频需求。本文提供一份超详细的保姆级教程,采用官方二进制包安装方式,彻底告别依赖包缺失的烦恼,并涵盖Docker Compose的安装与关键权限配置,助你轻松搞定容器化部署。


graph TD subgraph A[在线环境准备] A1[1. 确认系统架构<br/>x86_64 / aarch64] A2[2. 下载 Docker 二进制包] A3[3. 下载 Docker Compose] A4[4. 拉取并打包测试镜像] A1 --> A2 --> A3 --> A4 end A4 --> B[📁 文件传输<br/>U盘/内网] subgraph C[离线服务器部署] subgraph C1[基础安装] C1_1[1. 解压 Docker 二进制包] C1_2[2. 创建 systemd 服务] C1_3[3. 配置数据目录] C1_4[4. 禁用 SELinux 并重启] C1_1 --> C1_2 --> C1_3 --> C1_4 end subgraph C2[服务启动与验证] C2_1[5. 启动 Docker 服务] C2_2[6. 授权普通用户] C2_3[7. 验证 Docker 功能] C2_4[8. 安装 Docker Compose] C2_5[9. 验证 Compose] C2_1 --> C2_2 --> C2_3 --> C2_4 --> C2_5 end end B --> C1_1 C1_4 --> C2_1 C2_5 --> D[🎉 部署完成!]

前言:为什么选择二进制包安装?

大家好!在为银河麒麟V10(Kylin Linux Advanced Server V10)这样的国产服务器操作系统部署Docker时,尤其是在与外网隔离的内网环境中,传统的 yumapt 安装方式完全失效。

此时,我们有两种主流的离线安装方案:

  1. RPM/DEB 包安装:需要手动下载所有依赖包,过程繁琐且极易因版本不匹配或缺少间接依赖而失败。
  2. 官方二进制包(.tgz)安装:直接使用Docker官方编译好的二进制文件,几乎没有外部依赖,就像绿色软件一样解压即用。

毫无疑问,对于追求稳定、高效的离线部署,二进制包安装是我们的首选方案!它能帮你绕开复杂的依赖地狱,直达成功。

第一步:精准准备,弹药上膛

在开始之前,我们需要在一台可以联网的机器上,准备好所有必需的文件。

1. 确认目标服务器信息

首先,登录你的银河麒麟V10服务器,明确它的“身份信息”。

  • 查看系统版本cat /etc/kylin-release
  • 查看系统架构 (至关重要!)uname -p (输出 x86_64aarch64)
  • 检查内核版本uname -r (确保 >= 3.10)

2. 下载核心武器库

  • Docker 二进制包:

    • x86_64 架构: https://download.docker.com/linux/static/stable/x86_64/
    • aarch64 架构: https://download.docker.com/linux/static/stable/aarch64/
    • 推荐版本:docker-20.10.7.tgz
  • Docker Compose 二进制文件:

    • 访问地址: https://github.com/docker/compose/releases
    • 下载与你系统架构匹配的文件,例如 docker-compose-linux-x86_64
  • 测试镜像:

    • 在联网机器上执行:
      docker pull hello-world
      docker save -o hello-world.tar hello-world
      

最后,将下载好的 docker-*.tgzdocker-compose-*hello-world.tar 文件,全部传输到目标麒麟服务器上(例如,放到 /root/docker-offline 目录)。

第二步:实战操作,部署Docker

1. 解压并部署二进制文件

cd /root/docker-offline
tar -zxvf docker-20.10.7.tgz
sudo mv docker/* /usr/bin/

2. 创建并配置 systemd 服务

sudo vi /usr/lib/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

3. 自定义数据存储路径 (可选)

sudo mkdir -p /data/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "data-root": "/data/docker"
}
EOF

4. 关键一步:禁用SELinux

# 修改 /etc/selinux/config 文件
# 将 SELINUX=enforcing 或 SELINUX=permissive 改为 SELINUX=disabled
sudo sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
# 重启服务器使其生效
sudo reboot

第三步:启动、授权与验证

服务器重启后,我们继续。

1. 启动并验证Docker服务

sudo systemctl start docker
sudo systemctl enable docker
sudo systemctl status docker

看到绿色的 active (running) 字样即表示成功。

2. 配置非root用户权限 (强烈推荐)

为了日常操作的便捷和安全,我们应该将普通用户添加到 docker 用户组中,以避免处处使用 sudo

# 如果要给当前使用的普通用户添加到 docker组,可以使用以下快捷方式
sudo usermod -aG docker $USER

🔔 特别注意

  • 如果你是以 root 用户执行此命令,请务必将 $USER 替换为你实际需要使用Docker的普通用户名,如 test_user。直接使用 $USER 变量会把 root 用户加进去,没有意义。
  • 执行此命令后,被授权的用户需要退出当前终端会话并重新登录,新的用户组权限才能生效!

3. 验证Docker并运行容器

以你授权的普通用户登录后,执行以下命令(全程无需 sudo):

# 1. 验证版本,确认非root用户可以访问Docker守护进程
docker version

# 2. 导入离线镜像包
docker load -i /root/docker-offline/hello-world.tar

# 3. 运行容器!
docker run hello-world

如果终端打印出 "Hello from Docker!",恭喜你,Docker核心部分已完美部署!

第四步:锦上添花,安装Docker Compose

Docker Compose 是定义和运行多容器 Docker 应用程序的利器。

1. 部署二进制文件

# 将下载的 compose 文件移动到系统路径并重命名
sudo mv /root/docker-offline/docker-compose-linux-x86_64 /usr/local/bin/docker-compose

# 赋予其可执行权限
sudo chmod +x /usr/local/bin/docker-compose

2. 验证安装

docker-compose --version

如果成功输出版本号,例如 Docker Compose version v2.x.x,则表示安装成功!

第五步:避坑指南与常见问题

  • 权限问题 (permission denied): 优先检查是否已将正确的普通用户添加到 docker 组,并且已经重新登录。其次再检查SELinux是否已禁用并重启。
  • 镜像架构不匹配: 在 aarch64 服务器上 docker load 一个 x86_64 的镜像会失败。准备文件时务必确认架构统一。
  • 镜像管理: 所有镜像都必须通过 docker savedocker load 进行迁移。提前规划好你需要的应用镜像,并全部打包带走。

总结

通过采用官方二进制包的安装方式,我们成功绕开了离线环境中最令人头疼的依赖问题,实现了一次干净、稳定、高效的Docker及Docker Compose部署。并且通过合理配置用户权限,使得日常使用更加流畅安全。

希望这份结合了理论与实战的终极指南,能为你扫清在国产操作系统上拥抱容器化技术的一切障碍。现在,开始你的麒麟+Docker之旅吧!

Q.E.D.


寻门而入,破门而出