信创之国产浪潮电脑+统信UOS操作系统体验8:安装Docker并进行测试验证scratch镜像

news2025/1/21 4:53:16
☞ ░ 前往老猿Python博客 ░ https://blog.csdn.net/LaoYuanPython

一、前言

今日在进行Docker容器相关知识的学习,不过学习环境都不是基于统信UOS操作系统的,为了实验,老猿觉得手头国产浪潮电脑+统信UOS操作系统就是原生的linux操作系统,正适合进行试验,因此就一边查资料一边动手,为了为后来者提供参考,就将整个过程详细记录下来。

二、安装Docker

2.1、确认操作系统兼容版本

由于不同Linux系列在软件包安装管理上使用方式不同,在安装之前需要确认操作系统是哪个系列。
统信UOS操作系统主要兼容Debian Linux系列,可以通过如下指令验证:

administrator@jwp:~/Desktop$dpkg --get-selections | grep -v deinstall | grep -i ubuntu
administrator@jwp:~/Desktop$dpkg --get-selections | grep -v deinstall | grep -i Debian
debian-archive-keyring                          install
debianutils                                     install
intltool-debian                                 install
libsdl1.2debian:arm64                           install
odbcinst1debian2:arm64                          install

Debian系统中,使用apt-get命令来安装软件。例如,如果要安装名为package的软件包,可以执行以下命令:sudo apt-get install package。

需要注意的是,在安装软件之前,需要确保已经更新了软件源列表。可以使用sudo apt-get update命令来更新软件源列表。

另外,除了apt-get命令之外,还可以使用dpkg命令来安装Debian软件包,例如sudo dpkg -i package.deb。但是,dpkg命令需要在已经下载了Debian软件包的情况下使用,即必须先从某个源(例如官方源或第三方镜像)下载相应的软件包文件(通常是以.deb为扩展名的文件),下载过程可以通过在终端中使用apt-get或wget等工具下载.deb软件包文件。对于一些依赖关系比较复杂的软件包,建议使用apt-get来进行安装和配置。

2.2、使用sudo -i 指令进入超级用户操作模式避免频繁输入密码

administrator@jwp:~/Desktop$ sudo -i
请输入密码:
验证成功
root@jwp:~# 

2.3、执行机器软件包更新

因为Docker可能会依赖于特定版本的软件包或依赖关系,如果系统上的软件包列表不是最新的,可能会导致安装失败或出现其他问题。因此安装Docker之前需要确保系统已经更新了最新的软件包列表,以避免潜在的安装问题。

Linux的apt-get update指令用于更新本地软件包列表。当运行这个命令时,系统会连接到软件包仓库,并获取可用的软件包的最新信息。它通常与其他命令一起使用,如apt-get upgrade,用于更新系统中的软件包。

root@jwp:~# apt-get update
命中:1 https://pro-driver-packages.uniontech.com eagle InRelease
命中:2 https://cdn-professional-security.chinauos.com eagle/1050 InRelease                                   
命中:3 https://professional-packages.chinauos.com/desktop-professional eagle InRelease                       
命中:4 https://professional-packages.chinauos.com/printer eagle InRelease                                 
获取:5 https://app-store-files.uniontech.com/231129162224956/appstore eagle-pro InRelease [6,134 B]
获取:6 https://app-store-files.uniontech.com/231129162224956/appstore eagle-pro/appstore arm64 Packages [1,628 kB]
已下载 1,634 kB,耗时 4(441 kB/s)
正在读取软件包列表... 完成

2.4、执行docker安装指令

做了软件包更新后,就可以执行执行Docker安装了,指令和执行情况如下:

root@jwp:~# apt-get install docker-ce docker-ce-cli containerd.io
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
下列软件包是自动安装的并且现在不需要了:
  arch-test bridge-utils chromium-common chromium-sandbox cloud-image-utils debootstrap deepin-picker-cli
  distro-info libboost-log1.67.0 libboost-program-options1.67.0 libboost-serialization1.67.0
  libboost-test1.67.0 libboost-timer1.67.0 libfuse3-3 libgles2-mesa libleveldb1d liblxc1 libpam-cgfs
  libprotobuf-dev libprotoc17 libqt5charts5 libsdl2-image-2.0-0 lxc lxc-templates lxcfs protobuf-compiler
  qemu-utils uengine uengine-android-image uidmap zlib1g-dev
使用'apt autoremove'来卸载它(它们)。
下列【新】软件包将被安装:
  containerd.io docker-ce docker-ce-cli
升级了 0 个软件包,新安装了 3 个软件包,要卸载 0 个软件包,有 0 个软件包未被升级。
需要下载 0 B/68.1 MB 的归档。
解压缩后会消耗 303 MB 的额外空间。
正在选中未选择的软件包 containerd.io。
(正在读取数据库 ... 系统当前共安装有 250822 个文件和目录。)
准备解压 .../containerd.io_1.3.4-1_arm64.deb  ...
正在解压 containerd.io (1.3.4-1) ...
/var/cache/apt/archives/containerd.io_1.3.4-1_arm64.deb;
signature verify success!
正在选中未选择的软件包 docker-ce-cli。
准备解压 .../docker-ce-cli_5%3a19.03.8.2-1_arm64.deb  ...
正在解压 docker-ce-cli (5:19.03.8.2-1) ...
/var/cache/apt/archives/docker-ce-cli_5%3a19.03.8.2-1_arm64.deb;
正在选中未选择的软件包 docker-ce。
准备解压 .../docker-ce_5%3a19.03.8.2-1_arm64.deb  ...
正在解压 docker-ce (5:19.03.8.2-1) ...
/var/cache/apt/archives/docker-ce_5%3a19.03.8.2-1_arm64.deb;
正在设置 containerd.io (1.3.4-1) ...
正在设置 docker-ce-cli (5:19.03.8.2-1) ...
正在设置 docker-ce (5:19.03.8.2-1) ...
正在处理用于 systemd (241.50-1+deepin1) 的触发器 ...
正在处理用于 man-db (2.8.5-2) 的触发器 ...
正在处理用于 deepin-app-store (7.7.3.0012-1) 的触发器 ...
Rebuilding /usr/share/applications/bamf-2.index...
root@jwp:~# 

执行的apt-get install docker-ce docker-ce-cli containerd.io 指令,用于安装 Docker Community Edition(CE)和 Docker Command Line Interface(CLI)以及 containerd.io 容器运行时,以便可以开始使用 Docker 构建和管理容器化应用程序:

  • Docker CE 是 Docker 社区版,是一个免费、开源的容器平台,用于构建、打包和运行容器化应用程序。它提供了一组命令行工具和 API,使开发人员可以轻松地创建、部署和管理容器化应用程序
  • Docker CLI 是 Docker 的命令行接口,提供了用于管理 Docker 容器的命令行工具。通过 Docker CLI,可以创建、启动、停止、移动和删除容器
  • containerd.io 是一个容器运行时,用于管理容器的生命周期和资源。它可以作为 Docker 和其他容器平台的运行时组件,提供高效的容器管理和资源分配

2.5、验证Docker安装是否成功

2.5.1、查看版本信息

可以使用docker version查看docker是否安装成功以及安装的版本信息。

root@jwp:~# docker version
Client:
 Version:           19.03.0-dev
 API version:       1.40
 Go version:        go1.15.9
 Git commit:        
 Built:             Thu Dec  9 02:12:36 2021
 OS/Arch:           linux/arm64
 Experimental:      false

Server:
 Engine:
  Version:          dev
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.15.9
  Git commit:       
  Built:            Thu Dec  9 02:10:48 2021
  OS/Arch:          linux/arm64
  Experimental:     false
 containerd:
  Version:          2c90293f
  GitCommit:        2c90293f6964528176db4fc61d3defe7ee281779
 runc:
  Version:          1.0.0~rc6+dfsg1
  GitCommit:        1.0.0~rc6+dfsg1-3
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683
root@jwp:~# 

可以看到这个版本是比较老的,这是因为apt默认从操作系统配置仓库拉取安装包,这个包本身就版本比较旧。

可以使用apt-cache命令查询软件包信息(显示指定软件包的安装状态和候选版本信息,包括本地缓存中的版本和远程仓库中的版本),包括版本号、软件源信息等,如下所示:

root@jwp:~# apt-cache policy docker-ce
docker-ce:
  已安装:5:19.03.8.2-1
  候选: 5:19.03.8.2-1
  版本列表:
 *** 5:19.03.8.2-1 500
        500 https://professional-packages.chinauos.com/desktop-professional eagle/main arm64 Packages
        500 https://professional-security.chinauos.com eagle/1050/main arm64 Packages
        100 /usr/lib/dpkg-db/status
root@jwp:~# 

可以看到软件原是统信官网。

2.5.2、运行Docker输出hello world

Docker的hello-world镜像是一个非常简单的镜像,通常用于演示和测试Docker的基本功能。它包含一个名为“hello”的可执行文件,当在容器中运行时,该文件会打印出“Hello from Docker”的文本信息。

hello-world镜像非常小,只有几KB大小,因此非常适合用于测试和演示Docker的基本操作,例如拉取、构建和运行镜像等。

要使用hello-world镜像,可以在终端或命令行界面中输入以下命令:

root@jwp:~/docker_test# docker run hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (arm64v8)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

root@jwp:~/docker_test# 

可以看到执行该命令后,Docker将会创建一个新的容器并执行“hello”命令,打印出“Hello from Docker”的文本信息。

执行docker images可以查看当前存在的镜像,执行docker ps指令可以查看运行的容器:

root@jwp:~/docker_test# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              b038788ddb22        6 months ago        9.14kB
root@jwp:~/docker_test# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
root@jwp:~/docker_test# 

可以看到hello-world已经退出不在运行。

2.6、验证scratch 镜像是否可以创建或拉取

下面试图通过docker pulldocker build 拉取和创建一个scratch 镜像:

root@jwp:~/docker_test# docker pull scratch 
Using default tag: latest
Error response from daemon: 'scratch' is a reserved name

root@jwp:~/docker_test# cat Dockerfile
FROM scratch
root@jwp:~/docker_test# 

root@jwp:~/docker_test# docker build -t scratch .
Sending build context to Docker daemon  2.048kB
Step 1/1 : FROM scratch
 ---> 
No image was generated. Is your Dockerfile empty?
root@jwp:~/docker_test# 

可以看到无法拉取scratch镜像,而通过一个只有FROM scratch配置项的Dockerfile无法创建一个镜像。

三、小结

本文介绍了Docke的证scratch镜像的概念、机制和原理,以及其使用优点,同时验证了scratch无法被拉取和创建,只能作为一个创建其他镜像的base镜像使用。

参考资料

1、Docker基础知识 (28) - 在 Dockerfile 中以 scratch 为基础镜像 (FROM scratch)
2、每天5分钟玩转 Docker 容器技术之镜像

写博不易,敬请支持

如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!

更多关于国产操作系统的介绍内容请参考专栏《国产信创之光》的相关文章,更多云计算相关方面的介绍请参考《云计算与公有云服务》专栏的介绍。

关于老猿的付费专栏

  1. 付费专栏《https://blog.csdn.net/laoyuanpython/category_9607725.html 使用PyQt开发图形界面Python应用》专门介绍基于Python的PyQt图形界面开发基础教程,对应文章目录为《 https://blog.csdn.net/LaoYuanPython/article/details/107580932 使用PyQt开发图形界面Python应用专栏目录》;
  2. 付费专栏《https://blog.csdn.net/laoyuanpython/category_10232926.html moviepy音视频开发专栏 )详细介绍moviepy音视频剪辑合成处理的类相关方法及使用相关方法进行相关剪辑合成场景的处理,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/107574583 moviepy音视频开发专栏文章目录》;
  3. 付费专栏《https://blog.csdn.net/laoyuanpython/category_10581071.html OpenCV-Python初学者疑难问题集》为《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的伴生专栏,是笔者对OpenCV-Python图形图像处理学习中遇到的一些问题个人感悟的整合,相关资料基本上都是老猿反复研究的成果,有助于OpenCV-Python初学者比较深入地理解OpenCV,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/109713407 OpenCV-Python初学者疑难问题集专栏目录 》
  4. 付费专栏《https://blog.csdn.net/laoyuanpython/category_10762553.html Python爬虫入门 》站在一个互联网前端开发小白的角度介绍爬虫开发应知应会内容,包括爬虫入门的基础知识,以及爬取CSDN文章信息、博主信息、给文章点赞、评论等实战内容。

前两个专栏都适合有一定Python基础但无相关知识的小白读者学习,第三个专栏请大家结合《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的学习使用。

对于缺乏Python基础的同仁,可以通过老猿的免费专栏《https://blog.csdn.net/laoyuanpython/category_9831699.html 专栏:Python基础教程目录)从零开始学习Python。

如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。

老猿Python,跟老猿学Python!

☞ ░ 前往老猿Python博文目录 https://blog.csdn.net/LaoYuanPython ░

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1268900.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LiveData源码分析,粘性事件,数据倒灌

最近面试天天被虐,有个问题问的很频繁,就是 LiveData 的数据倒灌问题怎么解决。 我不知道有多少人连数据倒灌是什么都没听过的,更不要说什么解决方案啦。 我按照我的理解描述一下数据倒灌:就是设置了 LiveData 的数据之后&#…

“rhdf5filters.so’ not found when install ‘glmGamPoi‘ package

在R中安装glmGamPoi包的时候,出现了如下报错: install.packages(glmGamPoi) 尝试方案一: sudo apt install pkg-config libhdf5-dev安装lighdf5-dev,并将安装路径链接至usr/lib/文件。 locate rhdf5filters.so sudo ln -s /hom…

武汉建筑类初级职称助理工程师电子版证书申报

武汉建筑类初级职称助理工程师电子版证书申报 目前大家较为关注的是湖北省的助理工程师/初级职称评审出来之后是否可以网上查询。市面上还有一些地级市的区人社职改办出纸质版证书,职称证书、红头文件、评审表齐全,但是查询方式还是老一套的查询方式&am…

三勾商城新功能发布-多包裹订单

在不同场景下,商家可能需一笔订单需要分成多个包裹、分批发货,来看看怎么操作吧。 前端截图 后台截图 三勾小程序商城基于springbootelement-plusuniapp打造的面向开发的小程序商城,方便二次开发或直接使用,可发布到多端&#xf…

职场人最好的姿势是仰卧起坐

曾经看过一个回答说“职场人最好的姿势是仰卧起坐”。 卷累的就躺,休息好了再继续卷,卷是常态,“仰卧起坐”也好,“卷的姿势”也好,都是在反复“卷起”的过程中寻找一些舒适和平衡,“卷”得更持久罢了.....…

Linux 进程(一)

1 操作系统 概念:任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。笼统的理解,操作系统包括 内核(进程管理,内存管理,文件管理,驱动管理) 其他程序(例…

LeetCode(41)单词规律【哈希表】【简单】

目录 1.题目2.答案3.提交结果截图 链接: 单词规律 1.题目 给定一种规律 pattern 和一个字符串 s ,判断 s 是否遵循相同的规律。 这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 s 中的每个非空单词之间存在着双向连…

Elasticsearch 快照如何工作?

作者:Lutf ur Rehman Elastic 提供许多由讲师指导的面对面和虚拟现场培训以及点播培训。 我们的旗舰课程是 Elasticsearch 工程师、Kibana 数据分析和 Elastic 可观测性工程师。 所有这些课程都会获得认证。有关这些课程的详细介绍,请参考我之前的文章 “…

20.Oracle11g中的触发器

oracle11g中的触发器 一、触发器的概述1、什么是触发器2、触发器的类型3、触发器的组成4、触发器的作用 二、触发器的创建语法1、创建语法2、数据库启动触发器3、 用户登录触发器: 三、对触发器的基本操作点击此处跳转下一节:21.Oracle的程序包(Package)…

QNX下多窗口叠加融合方案

目的:QNX下EGL多窗口叠加融合方案 环境: 系统:QNX 环境:8155/8295问题: EGL有时候在同一个进程中因为引入不同的功能,在不同的线程中进行窗口的绘制和融合,QNX下的融合方案,实测使…

夸克大模型助力学术科研提效 四大优势提升知识正确性

当严谨的学术科研与创新的大模型技术结合在一起,会擦出什么样的火花?日前,夸克大模型甫一推出便以优秀的性能成为国产大模型中的“学霸”。在中国科学技术协会近期主办的“大模型应用场景研讨会”上,夸克大模型在快速阅读、创作润…

求臻医学胃癌关爱日:美味的高“盐”值杀手

胃癌的发病率具有广泛的地域差异,在东南亚国家尤为高发。韩国是胃癌发病率排名第一的国家,其次为日本,中国紧随其后,由于中国人口基数大,其绝对患胃癌人数为全球第一,每年有100多万新诊断患者,其…

nvm for windows使用与node/npm/yarn的配置

1 下载 nvm for windows download – github 下拉到Assets, 下载.exe文件 2 安装 安装到如下文件夹中 目录可以自己选, 可以换别的名字, 自己记住即可 新手建议全部看完再进行个人配置, 或者使用与博主一致的路径 D:\DevelopEnvironment\nvm3 配置nvm使用的镜像 node_mir…

wvp 视频监控平台抓包分析

抓包时机 下面的抓包时机是抓包文件最新,但是最有用的包 选择网卡开始抓包 如果之前已经选择网卡,直接开始抓包 停止抓包 重新抓包 sip播放过程分析 过滤条件 tcp.port 5060 and sip 可以看到有这些包 选择任何一个 ,戍边右键--追踪流--…

Maven——使用Nexus创建私服

私服不是Maven的核心概念,它仅仅是一种衍生出来的特殊的Maven仓库。通过建立自己的私服,就可以降低中央仓库负荷、节省外网带宽、加速Maven构建、自己部署构件等,从而高效地使用Maven。 有三种专门的Maven仓库管理软件可以用来帮助大家建立…

【C++】异常处理 ① ( 异常概念引入 | 抛出异常语法 | 捕获异常语法 | 异常捕获流程 | 异常处理代码示例 )

文章目录 一、异常处理1、异常概念引入2、抛出异常语法3、捕获异常语法4、异常捕获流程 二、异常处理代码示例1、错误代码示例 - 抛出异常 / 不捕获异常2、正确代码示例 - 抛出异常 / 捕获异常3、正确代码示例 - 抛出异常 / 捕获异常不处理继续抛出异常 一、异常处理 1、异常概…

【导航控制器的基本使用 Objective-C语言】

一、导航控制器的基本使用 1.那接下来呢,我们就要讲解这个重中之重了啊,导航控制器,大家一定要注意听,那首先呢,我们先来看ppt,引导一下, 导航控制器.pptx,打开, 那接下来呢,我们就要学习这个多控制器的管理了, 里面的第一个内容,叫做导航控制器, 那今天呢,我们…

unity学习笔记08

一、预制体 在Unity中,预制体(Prefab)是一种特殊类型的游戏对象,它允许你创建、配置和保存一个对象,然后在场景中多次使用。预制体的使用使得开发者能够更加灵活和高效地设计和管理游戏对象。 1.创建预制体 可以选择…

在很多nlp数据集上超越tinybert 的新架构nlp神经网络模型

在很多nlp数据集上超越tinybert 的新架构nlp神经网络模型 网络结构图测试代码网络结构图 测试代码 import paddle import numpy as np import pandas as pd from tqdm import tqdmclass FeedFroward(paddle.nn.Layer):

专业的调查问卷平台推荐:提升数据收集与分析效率

无论是学生还是职场人士,想做好一份调查问卷,关键先要确定调查的主题,然后确定调查人群,编辑问题,最后能够尽可能的美化问卷调查的主题。 想要做到这几点,就要要求问卷调查平台: 1、能够帮助你快速制作出一…