离线安装docker
参考:https://yeasy.gitbook.io/docker_practice/install/offline
1、yum本地文件安装
1.1、过程记录
准备安装包
在一台有网络的机器上下载安装包
安装docker源
wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
sudo sed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo
yum update
查看可用的docker版本
yum list docker-ce --showduplicates|sort -r
下载指定版本
mkdir -p /home/docker_packages/
yum install --downloadonly --downloaddir=/home/docker_packages/ docker-ce docker-ce-cli
执行发现系统已安装docker,改为执行update
yum update --downloadonly --downloaddir=/home/docker_packages/ docker-ce docker-ce-cli
再次执行报错,证书过期
https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/7/x86_64/stable/repodata/repomd.xml: [Errno 14] curl#60 - "Peer's Certificate has expired."
一番排查后是虚拟机时间不对
yum install ntpdate -y
ntpdate -u ntp.aliyun.com
然后再下载
yum update --downloadonly --downloaddir=/home/docker_packages/ docker-ce docker-ce-cli
报错
[Errno -1] 软件包与预期下载的不符。建议:运行 yum --enablerepo=docker-ce-stable clean metadata
执行
yum --enablerepo=docker-ce-stable clean metadata
再下载
yum update --downloadonly --downloaddir=/home/docker_packages/ docker-ce docker-ce-cli
还是报错
覆盖,不使用清华源
wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
yum update --downloadonly --downloaddir=/home/docker_packages/ docker-ce docker-ce-cli
下载成功。可能是之前安装的docker不是清华源安装的。所以更新的时候不匹配。
这个下载的只有2个文件,和文档不符。也许是因为之前已经安装过,有些已存在的依赖没有被下载。为避免意外,克隆一台全新的虚拟机来安装。
途中还是报错,软件包与预期下载的不符。
查https://blog.csdn.net/hylaking/article/details/87978819
执行
yum clean all
yum makecache
还是报错,覆盖
wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
yum clean all
yum makecache
再次下载
mkdir -p /home/docker_packages/
yum install --downloadonly --downloaddir=/home/docker_packages/ docker-ce docker-ce-cli
下载完成
-rw-r--r--. 1 root root 77K 8月 23 2019 audit-libs-python-2.8.5-4.el7.x86_64.rpm
-rw-r--r--. 1 root root 295K 11月 12 2018 checkpolicy-2.5-8.el7.x86_64.rpm
-rw-r--r--. 1 root root 34M 9月 16 07:20 containerd.io-1.6.24-3.1.el7.x86_64.rpm
-rw-r--r--. 1 root root 40K 7月 6 2020 container-selinux-2.119.2-1.911c772.el7_8.noarch.rpm
-rw-r--r--. 1 root root 14M 7月 24 23:07 docker-buildx-plugin-0.11.2-1.el7.x86_64.rpm
-rw-r--r--. 1 root root 25M 9月 15 21:42 docker-ce-24.0.6-1.el7.x86_64.rpm
-rw-r--r--. 1 root root 14M 9月 15 21:42 docker-ce-cli-24.0.6-1.el7.x86_64.rpm
-rw-r--r--. 1 root root 9.2M 9月 15 21:42 docker-ce-rootless-extras-24.0.6-1.el7.x86_64.rpm
-rw-r--r--. 1 root root 13M 9月 15 21:42 docker-compose-plugin-2.21.0-1.el7.x86_64.rpm
-rw-r--r--. 1 root root 82K 4月 29 2020 fuse3-libs-3.6.1-4.el7.x86_64.rpm
-rw-r--r--. 1 root root 55K 4月 29 2020 fuse-overlayfs-0.7.2-6.el7_8.x86_64.rpm
-rw-r--r--. 1 root root 67K 8月 23 2019 libcgroup-0.41-21.el7.x86_64.rpm
-rw-r--r--. 1 root root 113K 11月 12 2018 libsemanage-python-2.5-14.el7.x86_64.rpm
-rw-r--r--. 1 root root 458K 4月 4 2020 policycoreutils-python-2.5-34.el7.x86_64.rpm
-rw-r--r--. 1 root root 33K 7月 4 2014 python-IPy-0.75-6.el7.noarch.rpm
-rw-r--r--. 1 root root 621K 11月 12 2018 setools-libs-3.3.8-4.el7.x86_64.rpm
-rw-r--r--. 1 root root 82K 4月 29 2020 slirp4netns-0.4.3-4.el7_8.x86_64.rpm
拷贝后执行安装
rpm -Uvh *.rpm --nodeps --force
安装成功
1.2、安装流程总结
在一台有网且未安装docker的虚拟机上下载docker的rpm包,系统版本最好与要离线安装docker的系统是一致的。
wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
yum clean all
yum makecache
mkdir -p /home/docker_packages/
yum install --downloadonly --downloaddir=/home/docker_packages/ docker-ce docker-ce-cli
拷贝rpm文件到离线的系统
执行安装
rpm -Uvh *.rpm --nodeps --force
2、本地源安装
2.1、安装过程记录
单纯的创建本地源,可以参考:https://www.vos.cn/os/387.html
下载Everything系统镜像(阿里镜像,选择OS镜像下载)
https://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-Everything-2207-02.iso
虚拟机挂载
mount /dev/cdrom /mnt
安装reposync
yum install yum-utils
下载docker-ec源仓库
wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
mkdir -p /home/html/docker-ce
reposync -r docker-ce-stable -p /home/html/docker-ce/
配置本地源(可选)
# 删除其他网络源
rm -f /etc/yum.repo.d/*
# 添加本地源
cat >/etc/yum.repos.d/local_files.repo<< EOF
[Local_Files]
name=Local_Files
baseurl=file:///mnt
enable=1
gpgcheck=0
gpgkey=file:///mnt/RPM-GPG-KEY-CentOS-7
EOF
安装createrepo
yum clean all
yum install createrepo -y
createrepo /home/html/docker-ce/
# 使用overlay报错,不支持底层iso的文件系统
#mkdir -p /home/html/base_upper /home/html/base_work /home/html/base
#mount -t overlay overlay -olowerdir=/mnt/Packages/,upperdir=/home/html/base_upper,workdir=/home/html/base_work /home/html/base
mkdir -p /home/html/base
cp /mnt/Packages/* /home/html/base
createrepo /home/html/base/
开启http文件服务器
cd /home/html
nohup python -m SimpleHTTPServer 80 >./console.log 2>&1 &
客户端设置
rm -f /etc/yum.repo.d/*
cat >/etc/yum.repos.d/local_files.repo<< EOF
[base]
name=base
# 改成B服务器地址
baseurl=http://192.168.31.197/base
enable=1
gpgcheck=0
proxy=_none_
[docker_ce]
name=docker_ce
# 改成B服务器地址
baseurl=http://192.168.31.197/docker-ce
enable=1
gpgcheck=0
proxy=_none_
EOF
安装docker
yum install docker-ce
报错
---> 软件包 docker-compose-plugin.x86_64.0.2.21.0-1.el7 将被 安装
--> 解决依赖关系完成
错误:软件包:3:docker-ce-24.0.6-1.el7.x86_64 (docker_ce)
需要:container-selinux >= 2:2.74
错误:软件包:containerd.io-1.6.24-3.1.el7.x86_64 (docker_ce)
需要:container-selinux >= 2:2.74
错误:软件包:docker-ce-rootless-extras-24.0.6-1.el7.x86_64 (docker_ce)
需要:slirp4netns >= 0.4
错误:软件包:docker-ce-rootless-extras-24.0.6-1.el7.x86_64 (docker_ce)
需要:fuse-overlayfs >= 0.7
到服务器上执行(此时服务器用的本地文件源)
yum search fuse-overlayfs
没有这个包,说明Everything的iso里没有这个包
服务器恢复为公共网络源,查差的这几个包的信息
yum provides fuse-overlayfs
yum provides slirp4netns
yum provides container-selinux
发现都来自extras源下
列出源列表
yum repolist
下载extras源
参考:https://www.vos.cn/os/387.html
mkdir -p /home/html/extras
reposync -g -l -d -m --repoid=extras --newest-only --download-metadata --download_path=/home/html/
createrepo --worker=6 /home/html/extras/
修改客户端设置
[base]
name=base
# 改成B服务器地址
baseurl=http://192.168.31.197/base
enable=1
gpgcheck=0
proxy=_none_
[extras]
name=extras
# 改成B服务器地址
baseurl=http://192.168.31.197/extras
enable=1
gpgcheck=0
proxy=_none_
[docker_ce]
name=docker_ce
# 改成B服务器地址
baseurl=http://192.168.31.197/docker-ce
enable=1
gpgcheck=0
proxy=_none_
安装docker
yum install docker-ce
2.2、安装流程总结
找一台有网的机器
安装工具
yum install yum-utils createrepo
下载基本软件(阿里镜像,选择OS镜像,下载Everything系统镜像)
https://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-Everything-2207-02.iso
挂载Everything镜像
mount /dev/cdrom /mnt
开始制作
mkdir -p /home/html/{base,extras,docker-ce}
拷贝base软件
cp /mnt/Packages/* /home/html/base/
createrepo --worker=6 -v /home/html/base/
同步docker-ce源
wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
mkdir -p /home/html/docker-ce
reposync -r docker-ce-stable -p /home/html/docker-ce/
createrepo /home/html/docker-ce/
这一步可以参考:https://www.vos.cn/os/387.html,只下载最新的(未测试)
reposync -g -l -d -m --repoid=docker-ce-stable --newest-only --download-metadata --download_path=/home/html
说明:
-g, --gpgcheck Remove packages that fail GPG signature checking after downloading
-l, --plugins enable yum plugin support
-d, --delete delete local packages no longer present in repository
-m, --downloadcomps also download comps.xml
-r REPOID, --repoid=REPOID
specify repo ids to query, can be specified multiple
times (default is all enabled)
-n, --newest-only Download only newest packages per-repo
--download-metadata download all the non-default metadata
-p DESTDIR, --download_path=DESTDIR
Path to download packages to: defaults to current dir
--norepopath Don't add the reponame to the download path. Can only
be used when syncing a single repository (default is
to add the reponame)
同步extras源
mkdir -p /home/html/extras
reposync -g -l -d -m --repoid=extras --newest-only --download-metadata --download_path=/home/html/
createrepo --worker=6 /home/html/extras/
开启http文件服务器
cd /home/html
nohup python -m SimpleHTTPServer 80 >./console.log 2>&1 &
客户端设置
[base]
name=base
# 改成服务器地址
baseurl=http://192.168.31.197/base
enable=1
gpgcheck=0
proxy=_none_
[extras]
name=extras
# 改成服务器地址
baseurl=http://192.168.31.197/extras
enable=1
gpgcheck=0
proxy=_none_
[docker_ce]
name=docker_ce
# 改成服务器地址
baseurl=http://192.168.31.197/docker-ce
enable=1
gpgcheck=0
proxy=_none_
客户端安装
yum install docker-ce
3、一键安装脚本
#!/bin/bash
source /etc/profile
# #############
# 离线服务器一键安装docker
# 需要docker_packages.7z
# 下载地址:
# https://www.123pan.com/s/xMzAjv-wm7dv.html提取码:4U5d
# 实际位于123云盘:/linux软件包/docker_packages.tgz
# 校验 md5 a5b43193a62bca23786cd77b203030b6
# docker_packages.7z 中包含docker安装所需的rpm包,这个包使用以下命令,在虚拟机中生成
#wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
#yum clean all
#yum makecache
#mkdir -p /home/docker_packages/
#yum install --downloadonly --downloaddir=/home/docker_packages/ docker-ce docker-ce-cli
#tar czvf dockerker_packages.tgz /home/docker_packages/
# 虚拟机环境:
# 系统: CentOS Linux release 7.9.2009 (Core)
# 内核: Linux vm0 3.10.0-1160.71.1.el7.x86_64 #1 SMP Tue Jun 28 15:37:28 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
# glibc: ldd (GNU libc) 2.17
# docker版本: 24.0.6-1.el7.x86_64
# #############
/usr/bin/docker -v && {
echo "docker 已安装"
exit 0
}
cd "$(dirname "$0")" || exit 1
[ -f "./docker_packages.tgz" ] || {
echo "docker_packages.tgz未找到"
exit 2
}
[ `md5sum docker_packages.tgz |awk '{print $1}'` = a5b43193a62bca23786cd77b203030b6 ]|| {
echo "docker_packages.tgz文件md5有误,文件可能弄错了或被篡改"
exit 3
}
tar xzvf docker_packages.tgz || {
echo "解压失败,请手动解压到docker_packages.tgz到当前目录"
exit 4
}
# 安装docker
cd docker_packages && yum localinstall *.rpm && service docker start && docker -v