当前位置: 首页 > news >正文

Linux系统Ubuntu配置Docker详细流程

  本文介绍在Linux操作系统Ubuntu18.04及以上版本中,配置开源容器化平台和工具集Docker的详细方法;其中,我们以配置Docker平台的核心组件之一——Docker Engine为例来详细介绍。

  首先,大家需要明确,我们常说的Docker,其实就是指的Docker DesktopDocker 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是用于在DebianUbuntu等基于DebianLinux发行版中进行软件包管理的命令行工具。removeapt-get命令的一个选项,用于从系统中卸载指定的软件包。dockerdocker-enginedocker.iocontainerdrunc都是要卸载的软件包的名称,指定了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 installapt-get upgrade才可以。

  运行上述代码,如下图所示。其中紫色框内是我们输入电脑账户密码的地方。

在这里插入图片描述

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

在这里插入图片描述

2 存储库配置

  接下来,我们需要通过如下的代码,使得apt可以通过HTTPS来使用仓库(这个是Docker必要的条件)。

sudo apt-get install ca-certificates curl gnupg

  其中,ca-certificates是一个软件包名称,它包含了一组根证书和中间证书,用于验证HTTPS连接的安全性;安装ca-certificates软件包可以确保系统具有最新的根证书列表。curl是一个用于在命令行中进行网络请求的工具,它支持多种协议,如HTTPHTTPSFTP等;安装curl软件包可以让我们在终端中方便地进行网络请求和下载文件。gnupgGNU隐私卫士(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目录,该目录将用于存放密钥文件。

  接下来,-fsSLcurl命令的选项,用于指定请求的方式和参数;其中,-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-ceDocker社区版,是Docker的核心组件;docker-ce-cli表示Docker CLI (命令行界面),用于与Docker进行交互和管理容器。containerd用于管理容器的生命周期。docker-buildx-pluginDocker 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> //注意&#xff1a;参数urls 是预览图片的链接地址&#xff0c;是个数组 imgPreview() {uni.previewImage({indicator: "none",loop: false,urls: []&#xff0c;}) },参数说…...

Sulfo-CY3 azide在细胞标记与成像中的应用-星戈瑞

Sulfo-CY3azide作为荧光探针在细胞标记与成像中应用&#xff0c;它可以用于实现对细胞内特定分子或细胞结构的标记&#xff0c;从而实现对细胞的可视化和实时成像。以下是Sulfo-CY3azide在细胞标记与成像中的应用&#xff1a; 1.细胞膜标记&#xff1a;Sulfo-CY3azide可以与细…...

js如何遍历对象的key和value

在JavaScript中&#xff0c;可以使用for…in循环来遍历对象的键&#xff08;key&#xff09;和值&#xff08;value&#xff09;。以下是一个示例&#xff1a; let obj { key1: value1, key2: value2, key3: value3 }; for (let key in obj) { if (obj.hasOwnProperty…...

官方发布:Mac 版 Visual Studio IDE将于明年 8 月 31 日停止支持

近日&#xff0c;微软官方宣布&#xff1a;适用于 Mac 平台的 Visual Studio 集成开发环境&#xff08;IDE&#xff09;已经启动 "退休" 进程。Visual Studio for Mac 17.6 将继续支持 12 个月&#xff0c;持续到 2024 年 8 月 31 日。 微软表示在未来的 1 年内将重…...

如何使用CSS实现一个带有动画效果的折叠面板(Accordion)?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 带有动画效果的折叠面板&#xff08;Accordion&#xff09;⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个…...

HarmonyOS开发:探索动态共享包的依赖与使用

前言 所谓共享包&#xff0c;和Android中的Library本质是一样的&#xff0c;目的是为了实现代码和资源的共享&#xff0c;在HarmonyOS中&#xff0c;给开发者提供了两种共享包&#xff0c;HAR&#xff08;Harmony Archive&#xff09;静态共享包&#xff0c;和HSP&#xff08;H…...

【力扣】45.跳跃游戏 II <贪心>

给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说&#xff0c;如果你在 nums[i] 处&#xff0c;你可以跳转到任意 nums[i j] 处&#xff1a;0 < j < nums[i] &#xff1b;i j < n 返回到…...

J. Med. Chem 2022|TocoDecoy+: 针对机器学习打分函数训练和测试的无隐藏偏差的数据集构建新方法

原文标题&#xff1a;TocoDecoy: A New Approach to Design Unbiased Datasets for Training and Benchmarking Machine-Learning Scoring Functions 论文链接&#xff1a;https://pubs.acs.org/doi/10.1021/acs.jmedchem.2c00460 论文代码&#xff1a;GitHub - 5AGE-zhang/T…...

.net core 上传文件大小限制

微软官网文档中给的解释是.net core 默认上传文件大小限制是30M&#xff0c;所以即便你项目里没有限制&#xff0c;这里也有个默认限制。 官网链接地址 总结了一下解决办法&#xff1a; 1.首先项目里添加一个web.config自定义配置文件 在配置文件中加上这段配置 <!--//…...

Windows安装单节点Zookeeper

刚学习Dubbo&#xff0c;在Centos7中docker安装的zookeeper3.7.1。然后在启动provider时一直报错&#xff0c;用尽办法也没有解决。然后zookeeper相关的知识虽然以前学习过&#xff0c;但是已经忘记的差不多了。现在学习dubbo只能先降低版本使用了&#xff0c;之后再复习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、端口不能访问&#xff0c;可能是访问的协议问题或者防火墙拦截为问题导致。 1.1 centos环境下idea直接拉起部署&#xff0c;查看端口信息如下&#xff0c;命令为 [rootlocalhost ~]# lsof -i:8088 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java …...

C++-list实现相关细节和问题

前言&#xff1a;C中的最后一个容器就是list&#xff0c;list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代。list的底层是双向链表结构&#xff0c;双向链表中每个元素存储在互不相关的独立节点中&#xff0c;在节点中通过指…...

hadoop学习:mapreduce的wordcount时候,继承mapper没有对应的mapreduce的包

踩坑描述&#xff1a;在学习 hadoop 的时候使用hadoop 下的 mapreduce&#xff0c;却发现没有 mapreduce。 第一反应就是去看看 maven 的路径对不对 settings——》搜索框搜索 maven 检查一下 Maven 路径对不对 OK 这里是对的 那么是不是依赖下载失败导致 mapreduce 没下下…...

windows10上搭建caffe以及踩到的坑

对动作捕捉的几篇论文感兴趣&#xff0c;想复现一下&#xff0c;需要caffe环境就折腾了下&#xff01;转模型需要python 2.7环境&#xff0c;我顺便也弄了&#xff01;&#xff01;&#xff01; 1. 环境 Windows10 RTX2080TI 11G Anaconda Python2.7 visual studio 2013 cuda…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中&#xff0c;拉取视频流只要求udp方式&#xff0c;从2016开始要求新增支持tcp被动和tcp主动两种方式&#xff0c;udp理论上会丢包的&#xff0c;所以实际使用过程可能会出现画面花屏的情况&#xff0c;而tcp肯定不丢包&#xff0c;起码…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

Python如何给视频添加音频和字幕

在Python中&#xff0c;给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加&#xff0c;包括必要的代码示例和详细解释。 环境准备 在开始之前&#xff0c;需要安装以下Python库&#xff1a;…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...

自然语言处理——循环神经网络

自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元&#xff08;GRU&#xff09;长短期记忆神经网络&#xff08;LSTM&#xff09…...