内网离线安装dockerce工具
虽然通常我们都是使用网络来安装 docker 的,但是对于安全要求比较高的业务或者用户来说,部署产品需要在内网部署,而内网通常是无法访问外部网络的,所以就需要通过内网进行安装了。

1. yum 离线安装包获取方法
下载软件包
- 这里以 CentOS7 为例进行说明
# 替换并更新软件源 $ curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 1. 生成缓存 $ yum makecache
# 添加docker-ce软件源 $ curl -o /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo 生成缓存 $ yum makecache
# 前提条件 $ yum install -y yum-plugin-downloadonly 1. 下载rpm安装包,我这里以docker-ce为例说明 $ yum install --downloadonly --downloaddir=./ docker-ce
- 这里以 Ubuntu18.04 为例进行说明
# 会存放在/var/cache/apt/archives目录下面 $ sudo apt-get install --download-only pppoe
2. yum 离线安装 docker-ce 工具
安装软件包
- 如果我们发现原有的操作系统已经安装了 docker 工具,但是对应版本并不能满足我们的需要,可以将其卸载之后再次安装即可。
# 搜索已经安装的docker安装包 $ sudo yum list installed | grep docker docker.x86_64 2:1.12.6-16.el7.centos @extras 1. 分别删除安装包 $ sudo yum –y remove docker.x86_64
- 使用我们打好的 docker-ce 的安装包,执行安装命令的时候报错。
# 安装时一并安装对应依赖 $ sudo yum install ./*.rpm --> Finished Dependency Resolution Error: Package: audit-libs-python-2.8.1-3.el7.x86_64 (/audit-libs-python-2.8.1-3.el7.x86_64) Requires: audit-libs(x86-64) = 2.8.1-3.el7 Installed: audit-libs-2.8.1-3.el7_5.1.x86_64 (@updates) audit-libs(x86-64) = 2.8.1-3.el7_5.1 Available: audit-libs-2.8.1-3.el7.x86_64 (base) audit-libs(x86-64) = 2.8.1-3.el7 You could try using --skip-broken to work around the problem You could try running: rpm -Va --nofiles --nodigest 1. 安装的时候忽略以问题 $ rpm -ivh --force --nodeps ./*.rpm
- 可以发现可能为系统已经安装了对应的包,将其移出目录外之后再次安装。
# 移动到上级目录 $ mv audit-libs-2.8.1-3.el7.x86_64.rpm .. $ mv audit-libs-python-2.8.1-3.el7.x86_64.rpm ..
- 如果有缺少依赖的问题,就到下面网站中找对应缺失的相关依赖镜像。
# CentOS https://centos.pkgs.org/
- 总结下:虽然操作系统的大版本是一致的,但是对应小版本不一致可能会存在对应 rpm 包小版本的不一致,而导致存在依赖问题,导致安装时失败。
3. pip 离线安装包获取方法
下载软件包
- Python 环境安装 package 的方法,一般是采用 pip 命令在线从 PyPI 网站上面下载安装的,这也是最为方便的途径。但是在某些情况下,要为一台离线的机器安装 package 依赖包,其根本无法访问外网环境。当然,一般大厂都会有内网 PyPI 代理,只要改一下 --index-url 参数即可。若无代理的情况下,只能将所有依赖到的 package 离线下载下来,放到离线的机器上安装,即可。
- 由于手动下载所有依赖是一件非常痛苦的事情,所以我发现了 pip download 命令可以很好的解决这个问题。
# (1)确认需要的依赖包 - 外部第三方库 $ sudo vim requirements.txt alembic 1. (2)确认需要的依赖包 - 内部第三方库 $ sudo vim requirements.txt --index-url https://admin:[email protected]:4874/simple love_grilfriend 1. (3)通过如下命令下载依赖 $ sudo pip download -d /root/packages -r requirements.txt
4. pip 离线安装 package 方法
需要注意的是,存在 online 和 offline 机器架构完全相同,也可能架构不相同。
- [1] 架构相同
# 直接在online机器执行如下命令下载所有依赖package到当前目录 $ sudo pip download tensorflow 1. 将目录内容拷贝到目标offline机器并目标offline机器执行 $ pip install --no-index --find-links=file:/data/tensorflow_package_dir tensorflow 1. 不依赖其他库强制安装 $ pip install --no-deps tensorflow-1.2.3-cp36-cp36m-linux_x86_64.whl
- [2] 架构不同
# pyenv+docker 1. 架构不同的情况下,可以使用docker创建一个和目标机器相同的系统 1. 然后,使用上面这中方式进行下载和安装就可以了,也是很简单的,哈哈 1. pyenv 1. 通过pyenv安装指定版本的python $ curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash pyenv install 3.7.13 1. 切换Python版本 $ pyenv global 2.7.13 1. docker 1. 先启动目标系统的docker镜像 $ docker run -it -v /offline_tensorflow_py3:/package ubuntu /bin/bash 1. 在容器内安装python $ apt-get update && apt-get install python python-pip 1. 使用和相同架构的操作步骤
- [3] 存在问题 - 导致下文pip download失败的原因