概述

最近比较作,想在一台离线的 CentOS 上也装一个 Docker,所以这里就个人的方式做一个简单的介绍。

当然,如果只是想快速得实现一个离线安装,方法还是很多的,例如可以根据我的这篇 Tips: Yum Tips 中的 第 8 条,在同一个内网中可以访问外网的机器上开启一个 http_proxy,然后在离线的机器上设置一下 Yum 的代理,这样相当于打通了这台机器的外网,这种是在公网网络离线的情况下的解决办法。

但是,如果是完全没有网络的环境下,这种方法就行不通了,所以我选择了另外一种方式。

离线下载 Docker

我的离线安装的思路是,找一台和这个离线机器一模一样的 CentOS 环境(版本和安装的软件都一样),然后这台机器是可以访问公网的,然后我就下载 Docker 以及它依赖的各种 RPM,像这样:

  1. [[email protected].io]# yum install -y epel-release.noarch
  2. [[email protected].io]# yum-config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
  3. [[email protected].io]# mkdir ~/docker
  4. [[email protected].io]# cd ~/docker
  5. [[email protected].io]# yumdownloader --resolve docker-ce

前两步都是添加 Yum Repo 的过程,然后最后一步才是下载 RPM 的过程。这里一定要注意的是,一定要保证离线的环境和当前环境是真的一样的,因为如果有软件包不一样,很可能会导致这里下的 RPM 和目标离线机器不匹配,到时也就安装出错了。

  1. [[email protected].io]# ls -al ~/docker
  2. -rw-r--r--. 1 root root 78256 Aug 22 21:20 audit-libs-python-2.8.5-4.el7.x86_64.rpm
  3. -rw-r--r--. 1 root root 302068 Nov 12 2018 checkpolicy-2.5-8.el7.x86_64.rpm
  4. -rw-r--r--. 1 root root 24250280 Oct 18 21:56 containerd.io-1.2.10-3.2.el7.x86_64.rpm
  5. -rw-r--r--. 1 root root 40212 Sep 16 12:34 container-selinux-2.107-3.el7.noarch.rpm
  6. -rw-r--r--. 1 root root 25671976 Nov 14 18:19 docker-ce-19.03.5-3.el7.x86_64.rpm
  7. -rw-r--r--. 1 root root 41396672 Nov 14 18:19 docker-ce-cli-19.03.5-3.el7.x86_64.rpm
  8. -rw-r--r--. 1 root root 67720 Aug 22 21:29 libcgroup-0.41-21.el7.x86_64.rpm
  9. -rw-r--r--. 1 root root 115284 Nov 12 2018 libsemanage-python-2.5-14.el7.x86_64.rpm
  10. -rw-r--r--. 1 root root 468236 Aug 22 21:39 policycoreutils-python-2.5-33.el7.x86_64.rpm
  11. -rw-r--r--. 1 root root 32880 Jul 4 2014 python-IPy-0.75-6.el7.noarch.rpm
  12. -rw-r--r--. 1 root root 635184 Nov 12 2018 setools-libs-3.3.8-4.el7.x86_64.rpm

OK,这样就确保都安装好了。但是,这样直接 copy 有点麻烦,所以我们还是打个包先:

  1. [[email protected].io]# tar cvzf ~/docker.tar.gz *

离线安装 Docker

通过各种介质将这个 Docker 的离线安装包拷贝到离线机器上,然后就要开始安装了:

  1. [[email protected].io]# mkdir docker
  2. [[email protected].io]# tar xvf docker.tar.gz -C ~/docker
  3. [[email protected].io]# cd docker
  4. [[email protected].io]# rpm -ivh --replacefiles --replacepkgs *.rpm

验证安装

上面简单一条命令就可以了,如果出错了,很可能就是两个环境不一致导致的,所以我再三强调,一定要确保环境一致!如果没有出错,那么就来确认一下是否正确安装:

  1. [[email protected].io]# systemctl enable docker
  2. [[email protected].io]# systemctl start docker
  3. [[email protected].io]# systemctl status docker
  4. docker.service - Docker Application Container Engine
  5. Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
  6. Drop-In: /etc/systemd/system/docker.service.d
  7. └─http-proxy.conf
  8. Active: active (running) since
  9. Docs: https://docs.docker.com
  10. Main PID: 2659 (dockerd)
  11. Tasks: 67
  12. Memory: 166.1M
  13. CGroup: /system.slice/docker.service
  14. └─2659 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/co..

那么这里的 Docker 应该是 Running 的。

如果你还需要运行容器的话,那么可以参照我之前的 Docker 备份和恢复 进行了解一番。