最近需要在政务云系统中部署深度学习环境,其使用麒麟操作系统并与互联网相互隔离,无法使用常规的指令行方式进行安装。参考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命令加载这个镜像。就可以在麒麟操作系统中运行深度学习程序了。

麒麟操作系统上安装docker并加载镜像的更多相关文章

  1. Docker 导出&加载镜像

    文章首发自个人网站:https://www.exception.site/docker/docker-save-load-image 本文中,您将学习 Docker 如何导出&加载镜像.当我们 ...

  2. 在阿里云主机的Debian操作系统上安装Docker

    因为需要新搭建饭团网站,所以需要在阿里云的主机上跑数据库,java环境. 考虑到可扩展性和模块化,所以准备最近流行的docker技术.Docker -- 从入门到实践 阿里云主机1核1G,资源不多,所 ...

  3. 修改 docker image 安装目录 (解决加载大image时报错:"no space left on device")

    修改 docker image 安装目录 (解决加载大image时报错:"no space left on device" ) 基于Ubuntu16.04 docker版本: 17 ...

  4. XP安装IIS来加载aspx页面(Web调用SAP数据)

    1,安装IIS 在XP中安装IIS方法很简单,安装时需要提供安装光盘来加载I386文件,可以使用虚拟光驱或光盘.在此做个简单说明(控制面板-添加/删除 Windows组件-勾选Internet信息服务 ...

  5. 【docker部署】基于linux的centos操作系统部署安装docker容器

    一.docker介绍 容器是轻量级的,包含应用运行所需所有东西(代码.库.运行时环境.系统设置,以及依赖关系)的独立的包.每个容器都部署于它自己的 CPU.内存.块 I/O,以及网络资源上,所有这些都 ...

  6. 2300+字!在不同系统上安装Docker!看这一篇文章就够了

    辰哥准备出一期在Docker跑Python项目的技术文,比如在Docker跑Django或者Flask的网站.跑爬虫程序等等. 在Docker跑Python程序的时候不会太过于细去讲解Docker的基 ...

  7. linux上安装Docker (非常简单的安装方法) 2019

    Docker的三大核心概念:镜像.容器.仓库 镜像:类似虚拟机的镜像.用俗话说就是安装文件. 容器:类似一个轻量级的沙箱,容器是从镜像创建应用运行实例, 可以将其启动.开始.停止.删除.而这些容器都是 ...

  8. 在Ubuntu上安装Docker Engine

    在Ubuntu上安装Docker Engine 这篇文章是介绍如何在在Ubuntu上安装Docker Engine,就是Google翻译官方文档的版本,英语好的直接官方原文.原文 要在Ubuntu上开 ...

  9. 一段实现页面上的图片延时加载的js

    大家如果使用firebug去查看的话就会发现,当你滚动到相应的行时,当前行的图片才即时加载的,这样子的话页面在打开只加可视区域的图片,而其它隐藏的图片则不加载,一定程序上加快了页面加载的速度,对于比较 ...

随机推荐

  1. CodeGen按钮循环

    CodeGen按钮循环 按钮循环是一个模板文件构造,它允许您迭代CodeGen拥有的按钮信息集合.              在按钮循环中处理的按钮的定义可以来自两个位置之一. 如果基于UI工具箱输入 ...

  2. TVM部署和集成Deploy and Integration

    TVM部署和集成Deploy and Integration 本文包含如何将TVM部署到各种平台以及如何将其与项目集成. 与传统的深度学习框架不同.TVM堆栈分为两个主要组件: TVM编译器,完成所有 ...

  3. 尚硅谷Java——宋红康笔记【day6-day10】

    day6 一.数组的概述 1.数组的理解:数组(Array),是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理. 2.数组相关的概念: 数组名 元素 ...

  4. th:insert、th:replace、th:include抽取和引用页面公共片段、传参等

    一.抽取公共片段 th:fragment  给片段命名 将公共片段抽取出来,并在顶级标签内使用th:fragment给该片段命名. 例如:将公共片段抽取出来放到comment/bar.html中: & ...

  5. python 数据写入json文件时中文显示Unicode编码问题

    一.问题描述 import json dir = { '春晓':'asfffa', '春眠不觉晓' : '处处闻啼鸟', '夜来风雨声' : 56789, 'asdga':'asdasda' } fp ...

  6. CSS基础知识及其基本语法

    一.什么是CSS CSS 是层叠样式表( Cascading Style Sheets ) 的简称. 有时我们也会称之为CSS 样式表或级联样式表. CSS 也是一种标记语言 CSS 主要用于设置HT ...

  7. Django(67)drf搜索过滤和排序过滤

    前言 当我们需要对后台的数据进行过滤的时候,drf有两种,搜索过滤和排序过滤. 搜索过滤:比如我们想返回sex=1的,那么我们就可以从所有数据中进行筛选 排序过滤:比如我们想对价格进行升序排列,就可以 ...

  8. Redis 面霸篇:高频问题横扫核心知识点

    「码哥字节」从高频面试问题跟大家一起横扫 Redis 核心知识点,从根本上理解 Redis ,不做八股文的工具人,做扭转乾坤的大神. 码哥到如今已经写了 9 篇 Redis 连载,后台有小伙伴也让我写 ...

  9. AIOps:企业运维新力量!

    摘要:企业运维需求及挑战,来看看华为AIOps如何解决! 本文分享自华为云社区<[云驻共创]AIOps?企业运维新力量!>,原文作者:启明. 国际惯例,我们先介绍一下AIOps的概念:AI ...

  10. MySQL 为什么使用 B+ 树来作索引?

    什么是索引? 所谓的索引,就是帮助 MySQL 高效获取数据的排好序的数据结构.因此,根据索引的定义,构建索引其实就是数据排序的过程. 平时常见的索引数据结构有: 二叉树 红黑树 哈希表 B Tree ...