最近需要在政务云系统中部署深度学习环境,其使用麒麟操作系统并与互联网相互隔离,无法使用常规的指令行方式进行安装。参考docker官方文档并经过多次尝试,使用离线安装的方式完成了环境的部署。这里做一下笔记分享经验。

 

整个过程大概分为4步:

    ·操作系统版本信息查询

    ·docker官网下载安装文件

    ·离线安装

    ·镜像迁移及部署

 

一、操作系统版本查询

    麒麟系统在3.0版之后,不再使用FreeBSD内核作为基础,开始使用Linux内核。这也就是说,不少Linux版本的软件可以直接在麒麟系统上进行安装。但Linux也有多种不同的版本,这里就需要先确定所使用的麒麟操作系统版本对应哪个Linux OS。通常可以通过:uname -a   ||  lsb_release -a  ||  cat /proc/version  等指令进行查询。

    以我在政务云项目中所使用的银河麒麟4.0.X为例,使用 lsb_release -a 和 uname -a 指令仅能查看到麒麟版本和对应的Linux内核版本,但在使用 cat /proc/version 指令时,可以看到输出的内容中有 "Ubuntu1~16.04.9" 字样,也就是说该麒麟版本与Ubuntu较为接近,可以使用.deb安装包。

 

二、docker官网下载安装文件

    根据docker官网文档( https://docs.docker.com/engine/install/ubuntu/#install-from-a-package )指示,需要在下载地址( https://download.docker.com/linux/ubuntu/dists/ )选择正确的Ubuntu发行版本,我们刚查询到的对应版本是Ubuntu16.04.9,也就是xenial版本

 

至于说Ubuntu对应版本号与版本名称可以在 https://blog.csdn.net/songfulu/article/details/85310273 查到。

之后,根据官方文档指引,最终在 /ubuntu/dists/xenial/pool/stable/amd64/ 的路径下,找到了docker各稳定版的离线安装包。

 

 

需要特别注意的是,这里的安装包共有3类,即 containerd.io \ docker-ce-cli \ docker-ce 这3类安装包之间存在着依赖关系,每一类安装包都需要至少下载一个。

 

三、离线安装

    根据官方文档的说明,使用 dpkg -i 指令安装即可。 但经过实践摸索,这三类安装包之间存在依赖关系,顺序错误会导致安装失败

    ①首先要安装容器类服务,使用 dpkg -i containerd.io_XXXXXX.deb 指令进行安装。

    ②其次要安装docker客户端,cli 即为 client 的意思。使用 dpkg -i docker-ce-cli_XXXX.deb 指令进行安装。

 

     ③最后再安装docker服务端程序,使用 dpkg -i docker-ce_XXXX.deb 指令进行安装。

 

 这样就能够正确的建立依赖关系,完成docker的安装。一般来讲,安装之后会自动启动docker服务,若该服务未启动,则使用 service docker start 或 systemctl start docker 指令将其开启即可。

 

四、镜像迁移及部署

    docker环境配置成功,最后拷贝进来事先通过docker save命令打包好的镜像压缩包(tensorflow/tensorflow:2.2.3-gpu-py3),使用docker load命令加载这个镜像。就可以在麒麟操作系统中运行深度学习程序了。