Linux系统Ubuntu配置Docker详细流程
本文介绍在Linux操作系统Ubuntu的18.04及以上版本中,配置开源容器化平台和工具集Docker的详细方法;其中,我们以配置Docker平台的核心组件之一——Docker Engine为例来详细介绍。
首先,大家需要明确,我们常说的Docker,其实就是指的Docker Desktop或Docker Engine这两个东西。其中,Docker Desktop软件是适合于桌面操作系统的、完整的Docker,而Docker Engine则是Docker的核心运行引擎;Docker Desktop软件包含了Docker Engine和其他一些附加的功能。关于下载Docker Desktop还是Docker Engine,简单来说,就是如果在桌面操作系统(比如Windows电脑、Mac电脑中),就下载Docker Desktop软件,因为其可以通过图形化的界面来实现多种Docker功能;若是在服务器、Linux电脑等平台,则下载Docker Engine即可,因为其可以通过命令行来完成各项Docker功能。关于二者的更详细介绍与区分,大家可以参考Docker官网给出的阐述,这里就不再赘述。
话不多说,我们开始Docker Engine的具体配置。其中,本文所涉及的全部代码,都在终端中执行即可。
1 预处理
首先,我们需要确保电脑中没有老版本的Docker及其组件。例如,我这里的电脑虽然没有Docker应用,但是还是能搜索到一些关于docker的文件或文件夹;如下图所示。

因此,除非大家的电脑是刚刚买回来、什么都没有配置过的新电脑,其他情况下都建议大家首先执行如下的代码。
sudo apt-get remove docker docker-engine docker.io containerd runc
上述代码使用apt-get命令来移除Docker相关软件包和容器运行时的命令。其中,sudo是一个用于以超级用户(root)权限运行命令的关键词;通过使用sudo,可以执行需要管理员权限的操作。随后的apt-get是用于在Debian和Ubuntu等基于Debian的Linux发行版中进行软件包管理的命令行工具。remove是apt-get命令的一个选项,用于从系统中卸载指定的软件包。docker、docker-engine、docker.io、containerd和runc都是要卸载的软件包的名称,指定了Docker及其相关组件的软件包名称。通过在命令中列出这些软件包的名称,apt-get将卸载它们及其相关的文件和配置。
运行上述代码,如下图所示。可以看到,我的电脑中其实之前也并没有什么Docker的相关文件。

此外,我们还可以用Docker官网提供的一句代码来实现上述类似的功能;它的作用和前述代码一致。
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc;
do sudo apt-get remove $pkg;
done
运行上述代码,如下图所示。

接下来,我们需要更新一下系统的软件包列表;通过如下的代码即可实现这一需求。
sudo apt-get update
运行上述代码,系统会连接到软件包仓库服务器,并检查是否有可用的更新版本和新的软件包。这个命令会更新本地系统中的软件包列表,以反映最新的可用软件包信息。
在运行其他apt-get命令(如安装软件包、升级系统等)之前,通常建议先运行上述代码,确保系统获得最新的软件包列表。这样可以确保我们从最新的软件包仓库中获取软件包,并减少因为旧版本软件包而可能导致的问题。
需要注意,apt-get update只会更新软件包列表,而不会实际下载或安装软件包。如果后面我们要安装或升级软件包,需要进一步使用apt-get install或apt-get upgrade才可以。
运行上述代码,如下图所示。其中紫色框内是我们输入电脑账户密码的地方。

运行上述代码,有的时候会有一些报错,如下图所示。但一般情况下,这些报错都不会影响我们后续的正常操作。

2 存储库配置
接下来,我们需要通过如下的代码,使得apt可以通过HTTPS来使用仓库(这个是Docker必要的条件)。
sudo apt-get install ca-certificates curl gnupg
其中,ca-certificates是一个软件包名称,它包含了一组根证书和中间证书,用于验证HTTPS连接的安全性;安装ca-certificates软件包可以确保系统具有最新的根证书列表。curl是一个用于在命令行中进行网络请求的工具,它支持多种协议,如HTTP、HTTPS、FTP等;安装curl软件包可以让我们在终端中方便地进行网络请求和下载文件。gnupg是GNU隐私卫士(GNU Privacy Guard)的缩写,也称为GPG;它是一个用于加密和签名数据的工具集,安装gnupg软件包可以在系统中使用GPG密钥和加密功能。
运行上述代码,如下图所示。

接下来,我们通过如下代码,设置Docker软件源的GPG密钥;这个GPG是一个用于加密和签名数据的工具。
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
首先,-m 0755是设置文件或目录的权限的选项,0755表示所有者具有读、写和执行权限,而其他用户具有读和执行权限。随后的-d /etc/apt/keyrings指定要创建的目录路径,其创建一个名为/etc/apt/keyrings的目录。该命令的目的是创建/etc/apt/keyrings目录,该目录将用于存放密钥文件。
接下来,-fsSL是curl命令的选项,用于指定请求的方式和参数;其中,-fsSL意味着以静默模式发送请求(不显示进度信息),并跟随重定向。其后的链接,则是要获取的GPG密钥的URL。再随后的|是管道符号,用于将前一个命令的输出作为后一个命令的输入。--dearmor用于将二进制格式的GPG密钥转换为文本格式,并随后指定将转换后的GPG密钥保存到/etc/apt/keyrings/docker.gpg文件中。该命令的目的是使用curl从指定的URL下载Docker软件源的GPG密钥,并将其转换为文本格式后保存。
其次,chmod是一个用于修改文件或目录权限的命令,a+r表示将读权限授予所有用户,最后的路径则是要修改权限的文件路径。该命令的目的是将GPG密钥文件的读权限授予所有用户,以确保所有用户都能够读取该文件中的密钥信息。
运行上述代码,如下图所示。

接下来,我们需要配置Docker存储库,代码如下。
echo \"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
首先,echo是一个用于在终端输出文本的命令,引号内的内容则是要输出的文本。这里的[arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg]是一个APT源的配置选项,用于指定软件体系结构和GPG密钥的位置;其中的$(dpkg --print-architecture)是一个子命令,用于获取当前系统的体系结构。随后的链接,则是Docker软件源的URL。
接下来,$(. /etc/os-release && echo "$VERSION_CODENAME")是一个子命令,用于获取当前系统的Ubuntu版本代号(codename),其后的/etc/os-release文件包含有关操作系统的信息。stable表示要使用Docker软件源的稳定版本。
随后,tee是一个用于从标准输入读取数据并将其写入文件的命令。/etc/apt/sources.list.d/docker.list是要写入数据的文件路径。> /dev/null是将命令的输出重定向到空设备(null设备),即丢弃输出。该命令的目的是使用sudo权限将Docker软件源的配置信息写入到/etc/apt/sources.list.d/docker.list文件中,并将输出重定向到空设备,以避免输出到终端。
运行上述代码,如下图所示。

接下来,不知为何,按照官网的流程,我们还需要再更新一下系统的软件包列表;我们就按照官网的说法照做即可。
sudo apt-get update
运行上述代码,如下图所示。

3 Docker Engine配置
接下来,我们就可以开始配置Docker Engine自身了。配置Docker Engine的流程还是很简单的,直接执行如下的代码即可。
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
其中,docker-ce即Docker社区版,是Docker的核心组件;docker-ce-cli表示Docker CLI (命令行界面),用于与Docker进行交互和管理容器。containerd用于管理容器的生命周期。docker-buildx-plugin是Docker Buildx插件,用于构建多平台的Docker镜像;同样的,docker-compose-plugin也是Docker Compose插件,用于定义和管理多容器应用的编排和部署。
运行上述代码,如下图所示。

4 Docker Engine配置验证
随后,我们验证一下Docker Engine的配置成功与否。通过如下的代码即可加以验证。该命令会下载一个测试映像并在容器中运行它。
sudo docker run hello-world
运行上述代码,如下图所示。

出现如上图所示的字样,就说明我们的Docker Engine配置已经成功了。
需要说明的是,我们这篇文章只介绍了Docker Engine的下载、配置方法;关于以非root用户管理Docker的方法,大家可以参考文章Linux系统Ubuntu以非root用户身份操作Docker的方法(https://blog.csdn.net/zhebushibiaoshifu/article/details/132637472);关于Docker Engine具体的使用方法,我们将在后续的博客中加以详细的介绍。
至此,大功告成。
欢迎关注:疯狂学习GIS
相关文章:
Linux系统Ubuntu配置Docker详细流程
本文介绍在Linux操作系统Ubuntu的18.04及以上版本中,配置开源容器化平台和工具集Docker的详细方法;其中,我们以配置Docker平台的核心组件之一——Docker Engine为例来详细介绍。 首先,大家需要明确,我们常说的Docker&a…...
能直接运营的发接任务平台小程序搭建开发演示
有个项目估计做过互联网的小伙伴都听说过——发接任务平台。 基本每年都有发接任务平台关站,但又有新的平台出来,往复循环,无比热闹。这在互联网圈不常见,互联网项目很多都是风头过去了就结束了,但发接任务年年似乎都…...
React原理 - React Reconciliation-上
目录 扩展学习资料 React Reconciliation Stack Reconciler【15版本、栈协调】 Stack Reconciler-事务性 事务性带来的弊端: 扩展学习资料 名称 链接 备注 官方文档 Reconciliation – React 英文 stack reconciler Implementation Notes – React 英文…...
MySQL 主从复制与读写分离
1、什么是读写分离? 读写分离,基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。 2、为什么…...
Linux环境基础开发工具
xshellssh xshell--充当客户端,提供远程登录服务 yum 背景知识 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序. 但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放…...
uni-app+uView实现点击查看大图片的效果
<u-button text"月落" click"imgPreview()"></u-button> //注意:参数urls 是预览图片的链接地址,是个数组 imgPreview() {uni.previewImage({indicator: "none",loop: false,urls: [],}) },参数说…...
Sulfo-CY3 azide在细胞标记与成像中的应用-星戈瑞
Sulfo-CY3azide作为荧光探针在细胞标记与成像中应用,它可以用于实现对细胞内特定分子或细胞结构的标记,从而实现对细胞的可视化和实时成像。以下是Sulfo-CY3azide在细胞标记与成像中的应用: 1.细胞膜标记:Sulfo-CY3azide可以与细…...
js如何遍历对象的key和value
在JavaScript中,可以使用for…in循环来遍历对象的键(key)和值(value)。以下是一个示例: let obj { key1: value1, key2: value2, key3: value3 }; for (let key in obj) { if (obj.hasOwnProperty…...
官方发布:Mac 版 Visual Studio IDE将于明年 8 月 31 日停止支持
近日,微软官方宣布:适用于 Mac 平台的 Visual Studio 集成开发环境(IDE)已经启动 "退休" 进程。Visual Studio for Mac 17.6 将继续支持 12 个月,持续到 2024 年 8 月 31 日。 微软表示在未来的 1 年内将重…...
如何使用CSS实现一个带有动画效果的折叠面板(Accordion)?
聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 带有动画效果的折叠面板(Accordion)⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个…...
HarmonyOS开发:探索动态共享包的依赖与使用
前言 所谓共享包,和Android中的Library本质是一样的,目的是为了实现代码和资源的共享,在HarmonyOS中,给开发者提供了两种共享包,HAR(Harmony Archive)静态共享包,和HSP(H…...
【力扣】45.跳跃游戏 II <贪心>
给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i j] 处:0 < j < nums[i] ;i j < n 返回到…...
J. Med. Chem 2022|TocoDecoy+: 针对机器学习打分函数训练和测试的无隐藏偏差的数据集构建新方法
原文标题:TocoDecoy: A New Approach to Design Unbiased Datasets for Training and Benchmarking Machine-Learning Scoring Functions 论文链接:https://pubs.acs.org/doi/10.1021/acs.jmedchem.2c00460 论文代码:GitHub - 5AGE-zhang/T…...
.net core 上传文件大小限制
微软官网文档中给的解释是.net core 默认上传文件大小限制是30M,所以即便你项目里没有限制,这里也有个默认限制。 官网链接地址 总结了一下解决办法: 1.首先项目里添加一个web.config自定义配置文件 在配置文件中加上这段配置 <!--//…...
Windows安装单节点Zookeeper
刚学习Dubbo,在Centos7中docker安装的zookeeper3.7.1。然后在启动provider时一直报错,用尽办法也没有解决。然后zookeeper相关的知识虽然以前学习过,但是已经忘记的差不多了。现在学习dubbo只能先降低版本使用了,之后再复习zookee…...
C++ gendrate Gauss noise
手动生成 Marsaglia和Bray在1964年提出,C版本如下: mu是均值,sigma是方差,X服从N(0,1)分布 高斯噪声为加性噪声,在原图的基础上加上噪声即为加噪后的图象。 double generateGaussianNoise(double mu, double sigma) {static double V1, V2, S;static int phase 0;double X;d…...
centos环境下idea开发问题集锦
1、端口不能访问,可能是访问的协议问题或者防火墙拦截为问题导致。 1.1 centos环境下idea直接拉起部署,查看端口信息如下,命令为 [rootlocalhost ~]# lsof -i:8088 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java …...
C++-list实现相关细节和问题
前言:C中的最后一个容器就是list,list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指…...
hadoop学习:mapreduce的wordcount时候,继承mapper没有对应的mapreduce的包
踩坑描述:在学习 hadoop 的时候使用hadoop 下的 mapreduce,却发现没有 mapreduce。 第一反应就是去看看 maven 的路径对不对 settings——》搜索框搜索 maven 检查一下 Maven 路径对不对 OK 这里是对的 那么是不是依赖下载失败导致 mapreduce 没下下…...
windows10上搭建caffe以及踩到的坑
对动作捕捉的几篇论文感兴趣,想复现一下,需要caffe环境就折腾了下!转模型需要python 2.7环境,我顺便也弄了!!! 1. 环境 Windows10 RTX2080TI 11G Anaconda Python2.7 visual studio 2013 cuda…...
(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...
最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...
Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...
解析“道作为序位生成器”的核心原理
解析“道作为序位生成器”的核心原理 以下完整展开道函数的零点调控机制,重点解析"道作为序位生成器"的核心原理与实现框架: 一、道函数的零点调控机制 1. 道作为序位生成器 道在认知坐标系$(x_{\text{物}}, y_{\text{意}}, z_{\text{文}}…...
如何把工业通信协议转换成http websocket
1.现状 工业通信协议多数工作在边缘设备上,比如:PLC、IOT盒子等。上层业务系统需要根据不同的工业协议做对应开发,当设备上用的是modbus从站时,采集设备数据需要开发modbus主站;当设备上用的是西门子PN协议时…...
构建Docker镜像的Dockerfile文件详解
文章目录 前言Dockerfile 案例docker build1. 基本构建2. 指定 Dockerfile 路径3. 设置构建时变量4. 不使用缓存5. 删除中间容器6. 拉取最新基础镜像7. 静默输出完整示例 docker runDockerFile 入门syntax指定构造器FROM基础镜像RUN命令注释COPY复制ENV设置环境变量EXPOSE暴露端…...
