上次转载领导的Docker文章,有朋友问有没有离线安装的方法,我开始想的是用系统的安装镜像ISO来做yum源,进行本地安装。有时候在没有公网访问权限的场景下无法访问公共yum源来安装软件,这时通过创建本地的yum源可以解决一部分问题。方法就是通过挂载完整的系统安装ISO镜像文件,来作为本地yum源。今天简单分享一下操作方法。

首先创建存放系统镜像的目录和挂载镜像的目录。

mkdir –p /yum/iso

mkdir –p /yum/local

上传安装系统的ISO镜像文件到/yum/iso目录下。

docker centos7镜像(CentOS 7使用ISO镜像配置本地yum源)(1)

通过以下命令将ISO镜像挂载到本地yum目录/yum/local下。

mount -o loop /yum/iso/CentOS-7-x86_64-DVD-1804.iso /yum/local/

docker centos7镜像(CentOS 7使用ISO镜像配置本地yum源)(2)

可以使用命令检查是否挂载成功。

df –h

docker centos7镜像(CentOS 7使用ISO镜像配置本地yum源)(3)

在/etc/yum.repos.d/目录下新建一个调用本地yum源的repo文件。

vi /etc/yum.repos.d/local.repo

docker centos7镜像(CentOS 7使用ISO镜像配置本地yum源)(4)

repo文件内容如下:

[local]

name=local

# baseurl就是挂载路径,我定义的路径是/yum/local

baseurl=file:///yum/local

# enabled的值为1表示启用该yum源

enabled=1

#本地挂载不涉及数字签名问题,将gpgcheck值设置为0,表示不检查数字签名

gpgcheck=0

# gpgkey的值可以进到挂载路径下进行查看,形如RPM-GPG-KEY-XXXX,我这里看到的是RPM-GPG-KEY-CentOS-7。

gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-CentOS-7

这个地方还出现一个小意外,重启之后会看不到路径下的文件信息,原因是重启后挂载点丢失了,需要重新挂载。可以通过解压镜像文件或者是写一个启动运行的脚本来解决。

docker centos7镜像(CentOS 7使用ISO镜像配置本地yum源)(5)

测试使用本地yum源

先模拟一个没有公网的环境,避免干扰。本来是想用360路由器的上网黑名单功能来限制网络访问,结果发现不管用,IP加了黑名单照常能上网。好在我是学过网络的,想到绑定一个错误的ARP表项;就先把ARP信息绑定,然后改了一个错误的MAC地址,这样这台服务器就没法上网了,也就成了本地环境。

docker centos7镜像(CentOS 7使用ISO镜像配置本地yum源)(6)

然后将系统自带的yum源配置文件移动至其它地方,不建议删除,万一后面用到再创建会麻烦很多。我在同路径下新建了一个history目录,用于存放这些repo文件。(注意:网上有案例是移动到了/tmp目录下,因为/tmp目录过一段时间后会自动删除早期的文件,如果是实验操作,请在操作完成后需要立即恢复或移动到其他位置)

mkdir /etc/yum.repos.d/history

docker centos7镜像(CentOS 7使用ISO镜像配置本地yum源)(7)

mv CentOS-Base.repo CentOS-CR.repo CentOS-Debuginfo.repo CentOS-fasttrack.repo CentOS-Media.repo CentOS-Sources.repo CentOS-Vault.repo –t history

docker centos7镜像(CentOS 7使用ISO镜像配置本地yum源)(8)

清除服务器的yum缓存,再缓存新的yum源。

yum clean all

yum makecache

docker centos7镜像(CentOS 7使用ISO镜像配置本地yum源)(9)

再安装一下ntp服务。

yum install –y ntp

docker centos7镜像(CentOS 7使用ISO镜像配置本地yum源)(10)

安装成功。言归正传,那docker能不能安装成功呢?

docker centos7镜像(CentOS 7使用ISO镜像配置本地yum源)(11)

可以看到,本地yum源中没有这个安装包,那就只能上网去搜了。

我搜了一下,因为依赖包比较多,我就没有测试了,大概是需要11个安装包。

docker centos7镜像(CentOS 7使用ISO镜像配置本地yum源)(12)

而在线安装显示需要的依赖包更多。

docker centos7镜像(CentOS 7使用ISO镜像配置本地yum源)(13)

如果你确实有这种需求,祝你好运吧!