内网离线安装dockerce工具

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

内网离线安装docker-ce工具

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失败的原因