概述
最近比较作,想在一台离线的 CentOS 上也装一个 Docker,所以这里就个人的方式做一个简单的介绍。
当然,如果只是想快速得实现一个离线安装,方法还是很多的,例如可以根据我的这篇 Tips: Yum Tips 中的 第 8 条,在同一个内网中可以访问外网的机器上开启一个 http_proxy,然后在离线的机器上设置一下 Yum 的代理,这样相当于打通了这台机器的外网,这种是在公网网络离线的情况下的解决办法。
但是,如果是完全没有网络的环境下,这种方法就行不通了,所以我选择了另外一种方式。
离线下载 Docker
我的离线安装的思路是,找一台和这个离线机器一模一样的 CentOS 环境(版本和安装的软件都一样),然后这台机器是可以访问公网的,然后我就下载 Docker 以及它依赖的各种 RPM,像这样:
[root@liqiang.io]# yum install -y epel-release.noarch
[root@liqiang.io]# yum-config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
[root@liqiang.io]# mkdir ~/docker
[root@liqiang.io]# cd ~/docker
[root@liqiang.io]# yumdownloader --resolve docker-ce
前两步都是添加 Yum Repo 的过程,然后最后一步才是下载 RPM 的过程。这里一定要注意的是,一定要保证离线的环境和当前环境是真的一样的,因为如果有软件包不一样,很可能会导致这里下的 RPM 和目标离线机器不匹配,到时也就安装出错了。
[root@liqiang.io]# ls -al ~/docker
-rw-r--r--. 1 root root 78256 Aug 22 21:20 audit-libs-python-2.8.5-4.el7.x86_64.rpm
-rw-r--r--. 1 root root 302068 Nov 12 2018 checkpolicy-2.5-8.el7.x86_64.rpm
-rw-r--r--. 1 root root 24250280 Oct 18 21:56 containerd.io-1.2.10-3.2.el7.x86_64.rpm
-rw-r--r--. 1 root root 40212 Sep 16 12:34 container-selinux-2.107-3.el7.noarch.rpm
-rw-r--r--. 1 root root 25671976 Nov 14 18:19 docker-ce-19.03.5-3.el7.x86_64.rpm
-rw-r--r--. 1 root root 41396672 Nov 14 18:19 docker-ce-cli-19.03.5-3.el7.x86_64.rpm
-rw-r--r--. 1 root root 67720 Aug 22 21:29 libcgroup-0.41-21.el7.x86_64.rpm
-rw-r--r--. 1 root root 115284 Nov 12 2018 libsemanage-python-2.5-14.el7.x86_64.rpm
-rw-r--r--. 1 root root 468236 Aug 22 21:39 policycoreutils-python-2.5-33.el7.x86_64.rpm
-rw-r--r--. 1 root root 32880 Jul 4 2014 python-IPy-0.75-6.el7.noarch.rpm
-rw-r--r--. 1 root root 635184 Nov 12 2018 setools-libs-3.3.8-4.el7.x86_64.rpm
OK,这样就确保都安装好了。但是,这样直接 copy 有点麻烦,所以我们还是打个包先:
[root@liqiang.io]# tar cvzf ~/docker.tar.gz *
离线安装 Docker
通过各种介质将这个 Docker 的离线安装包拷贝到离线机器上,然后就要开始安装了:
[root@liqiang.io]# mkdir docker
[root@liqiang.io]# tar xvf docker.tar.gz -C ~/docker
[root@liqiang.io]# cd docker
[root@liqiang.io]# rpm -ivh --replacefiles --replacepkgs *.rpm
验证安装
上面简单一条命令就可以了,如果出错了,很可能就是两个环境不一致导致的,所以我再三强调,一定要确保环境一致!如果没有出错,那么就来确认一下是否正确安装:
[root@liqiang.io]# systemctl enable docker
[root@liqiang.io]# systemctl start docker
[root@liqiang.io]# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Drop-In: /etc/systemd/system/docker.service.d
└─http-proxy.conf
Active: active (running) since
Docs: https://docs.docker.com
Main PID: 2659 (dockerd)
Tasks: 67
Memory: 166.1M
CGroup: /system.slice/docker.service
└─2659 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/co..
那么这里的 Docker 应该是 Running 的。
如果你还需要运行容器的话,那么可以参照我之前的 Docker 备份和恢复 进行了解一番。