Docker技术概论(2):Docker环境的搭建
- 文章信息 - Author: 李俊才 (jcLee95)
Visit me at: https://jclee95.blog.csdn.net
My WebSite:http://thispage.tech/
Email: 291148484@163.com.
Shenzhen China
Address of this article:https://blog.csdn.net/qq_28550263/article/details/136359535
HuaWei:https://bbs.huaweicloud.com/blogs/422806
【介绍】:本文介绍Docker安装与配置。

目 录
- 1. 概述
- 2. 在Linux上安装Docker
- 2.1 当前版本Ubuntu系统上的安装
- 2.2 针对于比较旧的Ubuntu版本
- 更新包列表
- 安装依赖包
- 添加Docker官方GPG密钥
- 添加Docker存储库
- 安装Docker
- 启动并启用Docker服务
- 验证Docker安装
- 3. 在Windows上安装Docker
- 4. 不要在MacOS上学习Docker
- 5. 结论
1. 概述
上一篇文章中,我们比较了两种不同的虚拟化技术——虚拟机 和 Docker。前者是基于硬件的虚拟化技术而后者则是基于系统的虚拟化技术。
Docker 是一个开源的应用容器引擎,允许开发者打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。几乎没有性能开销,可以有效地利用系统资源。
Docker 的使用可以极大地简化应用的部署和管理过程,使得应用的分发、测试以及版本控制更加简单高效。随着云计算和微服务架构的普及,Docker 的重要性日益凸显,成为现代软件开发不可或缺的工具之一。
在开始正式使用Docker之前,我们需要现在一台电脑上安装Docker,安装Docker的首选是 Linux 环境,文本接下来将具体介绍Docker的安装过程。
2. 在Linux上安装Docker本节以Ubuntu为例,介绍如何在Linux上安装Docker的。
2.1 当前版本Ubuntu系统上的安装在最新的Ubuntu发行版上,可以直接使用apt工具安装Docker:
sudo apt update
sudo apt install -y docker.io
安装完成后,你可以使用docker -v命令来检验是否安装成功

对于某些较旧的Ubuntu版本或特定的发行版,Docker官方建议使用它们提供的存储库来安装,以确保获得最新的Docker版本和最新的安全更新。
这里介绍使用Docker官方存储库进行安装的步骤。
更新包列表
在安装Docker之前,首先要确保你的Ubuntu系统的软件包列表是最新的。使用以下命令更新:
sudo apt update
安装依赖包
Docker需要一些依赖包来正常运行。你可以使用以下命令安装这些依赖包:
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
添加Docker官方GPG密钥
Docker官方提供了一个GPG密钥,用于验证其软件包的真实性。使用以下命令添加官方GPG密钥:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
添加Docker存储库
接下来,你需要将Docker存储库添加到Ubuntu系统中。这可以通过以下命令来完成:
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
安装Docker
现在,你已经添加了Docker存储库,可以使用以下命令来安装Docker:
apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
以上命令将安装Docker引擎和相关组件。
启动并启用Docker服务
安装完成后,你需要启动并启用Docker服务,以便它在系统启动时自动启动。使用以下命令执行这些操作:
sudo systemctl start docker
sudo systemctl enable docker
验证Docker安装
最后,你可以运行以下命令来验证Docker是否成功安装,并查看Docker版本信息:
docker -v
你将看到Docker版本信息的输出,表示Docker已成功安装在你的Ubuntu系统上。

在系统上,以一种完全可视化的方式完成安装。和常见的 Windows 软件安装相似,需要先在官网上下载安装包。Docker的官方网站地址为:https://www.docker.com/。


等待下载完成:

找到下载好的文件,双击运行安装程序:

选择相应配置,等待安装完成:

安装结束后,点击 “Close adn restart” 按钮将会强制重启计算机(而不是程序),因此如果你又其它重要工作需要先完成保存:

计算机重启后,当你第一次启动 Docker for desktop 时,将进入设置向导页面:

这里直接选择“Use recommended settings”(使用推荐的设置)即可。点击“Finish”按钮以完成初始设置。等待程序初始化完成后即可使用了:

这里我打算介绍在MacOS上安装Docker,因为它是最晚兼容的一个平台,且安装过程基于与之前介绍的 WIndows Docker Desktop一样。
虽然目前Docker Desktop已经拓展到了 MacOS平台,但是后续很多功能都不会在该系统上操作。对于切图工作者来说,苹果推出的Mac系列产品拥有比较好的屏幕。但是对于敲命令为主的Docker工程师来说,这种东西完全是多余。并且Docker之后还需要学习K8s,很多东西都不是Mac能够干的,从生产看,Mac既不好用、也无法用到底。如果像进一步学习,乘早丢弃切图机,避免浪费时间。
Docker是基于Linux容器技术的,这意味着它在Linux环境下运行得最为自然,因此最理想的环境是Linux,这于是诸多服务器的标准环境。在MacOS上,Docker需要通过虚拟化技术(如HyperKit)来模拟Linux环境,这一额外的抽象层可能会导致性能损失,尤其是在资源密集型的应用场景中。
MacOS用户在使用Docker时可能会遇到文件系统性能问题。由于Docker容器需要通过虚拟化层访问Mac的文件系统,这可能会导致文件访问速度较慢,尤其是在大型项目或需要频繁读写文件的应用中。虽然Docker团队和社区一直在努力优化这方面的性能,但这仍然是MacOS上使用Docker时需要考虑的一个因素。
Docker Desktop for Mac的安装和运行还需要占用相对较多的系统资源,包括CPU和内存。对于那些资源有限的Mac用户来说,这可能会影响到其他应用程序的运行效率。
当然以上仅仅是一些建议,也可以选择在后续学习中踩坑,然后自行上社区寻早解决办法,不过这很费时间,并且不会产生任何额外收益。
5. 结论随着技术的不断进步和开发环境的日益复杂化,Docker 作为一种高效、便捷的容器化技术,已经成为了软件开发和运维领域的重要工具。通过在不同的操作系统上安装和配置 Docker,开发者可以轻松地构建、分发和运行任何应用,极大地提高了开发效率和应用的可移植性。
尽管在 MacOS 上使用 Docker 存在一定的性能和资源限制,但这并不妨碍 Docker 成为跨平台应用开发和部署的强大工具。对于希望在 Linux 环境下获得最佳性能和体验的用户,Linux 仍然是首选的操作系统。然而,对于那些习惯于 Windows 或 MacOS 环境的用户,Docker 也提供了便捷的解决方案,使他们能够在熟悉的环境中利用 Docker 的强大功能。
总之,无论是在 Linux、Windows 还是 MacOS 上,Docker 都为软件的开发、测试和部署提供了前所未有的便利和效率,是现代软件工程师工具箱中不可或缺的一部分。随着 Docker 社区的不断成长和技术的不断进步,我们有理由相信,Docker 将继续引领软件开发和运维的未来趋势。
相关文章:
Docker技术概论(2):Docker环境的搭建
Docker技术概论(2) Docker环境的搭建 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blo…...
电脑休眠之后唤不醒
现象:午休时间电脑休眠了,醒来之后发现在密码输入界面,但鼠标键盘没反应。按重启键或电源机重新开机,结果开不了机。 原因:1、内存条脏了,导致内存条读取失败 2、休眠的时候硬盘休眠了,导致按…...
Python列表中添加删除元素不走弯路
1.append() 向列表中添加单个元素,一般用于尾部追加 list1 ["香妃", "乾隆", "贾南风", "赵飞燕", "汉武帝"]list1.append("周瑜") print(list1) # [香妃, 乾隆, 贾南风, 赵飞燕, 汉武帝, 周瑜]…...
MATLAB环境下脑电信号EEG的谱分析
脑电信号一直伴随着人类的生命,脑电波是脑神经细胞发生新陈代谢、离子交换时细胞群兴奋突触电位总和,脑电信号的节律性则和丘脑相关,含有丰富的大脑活动信息。通常我们所接触的脑电图都是头皮脑电图,在有些特殊场合还需要皮下部位…...
librtmp源码分析
阅读了librtmp的源码,简单记录下。 首先补充下AMF格式基本知识 1 AMF格式 AMF是Action Message Format(动作消息格式)的简写,它是一种二进制的数据格式。它的设计是为了把actionscript里面的数据(包括Object, Array, Boolean, Number等)序列化成二进制…...
CCDP.00.问老师问题前你首先需要做的事情
一、一定要按老师要求做好快照!!!!! 1、在关键节点处,比如做完Part1后,关机状态下做快照。 2、在做没把握的操作前先做快照(这个可以在开机状态下做快照,但推荐关机状态…...
「算法」常见位运算总结
位运算符 异或 按位异或可以实现无进位相加,所谓无进位相加,就是在不考虑进位的情况下将两个数相加(后面有道题需要用到这种操作) 异或的运算律 ①a ^ 0 a ②a ^ a 0 ③a ^ b ^ c a ^ ( b ^ c ) 有符号右移>> 将一个…...
【C++初识】语句
文章目录 1.注释 变量 常量 关键字 标识符命名规则 数据类型 sizeof关键字 数据的输入 运算符2.程序流程结构2.1选择结构2.2循环结构2.21while{循环条件}{循环语句};//满足循环条件,执行循环语句2.22do{循环语句}while{循环条件};//do....whi…...
Python线性代数傅里叶分析和动态系统模拟分析之一
要点 Python向量数值计算、可视化,线性独立性和子空间。了解欧几里德距离、余弦相似度和皮尔逊相关性应用案例:Python数值计算文档相似度时间序列和特征检测示例:Python信号处理边缘检测器, K均值示例:随机簇质心分布Python傅里叶…...
mysql插入GEOMETRY相关字段类型(point,linestring等)
一、问题 向mysql中插入point,linestring等相关空间坐标字段,出现报错: 1416 - Cannot get geometry object from data you send to the GEOMETRY field要插入的数据:...
vue3学习 【5】watch的使用
什么是watch 当我们需要根据一个数据的变化来进行一些操作的时候我们需要使用侦听器,它能够在响应式数据发生变化的时候触发提供的回调函数 基础侦听 watch 可以侦听不同的数据源。例如: ref计算属性响应式对象getter函数多个数据源组层的数据 cons…...
PyTorch深度学习快速入门
PyTorch深度学习快速入门 1.PyTorch环境配置及安装2.python编辑器的选择、安装、配置(pycharm、JupyTer安装)3.为什么torch.cuda.is_available()返回false4.python学习中两大法宝函数(也可用在pytorch)5.pycharm和jupyter…...
种花
分情况: 第一盆k种选择,之后全部k-1种选择 每次相乘结果对1e97取模 #include <iostream> #include <vector> #include <algorithm> using namespace std; #define endl \n const int N 1e9 7;int main() {ios::sync_with_stdio(f…...
Android Shadow插件化框架分析与集成(二)
本文索引 前言插件打包后如何交给宿主使用?宿主加载插件代码分析全局初始化操作加载插件activity测试过程中遇到的问题报错 1 :报错2:报错3 :二次开发支持多插件、多进程功能mPpsController 的构造方式mPluginLoader的构造方式多插件如何改造前言...
Go 与 Rust:导航编程语言景观
在当今构建软件时,开发者在编程语言上有着丰富的选择。两种脱颖而出的语言是 Go 和 Rust - 都很强大但却截然不同。本文将从各种因素比较这两种语言,以帮助您确定哪种更适合您的需求。 我们将权衡它们在并发、安全性、速度、互操作性等方面的方法。我们将…...
包管理工具之npm也慌了?
起因 因为npm的种种问题,我很早就换成了pnpm和yarn(但是其实npm也在使用),已经很久没有关注npm的功能更新了。最近无意间进入Node18版本的安装目录,发现其除了常规的node,npm等默认安装了一个新的包corepack,这个就是今天我要分享的东西了。 注: 我因为18版本的node上…...
mobile app 安全扫描工具MobSF了解下
可以干啥: static 静态分析 dynamic 动态分析 可以用来渗透了 如何docker安装 docker image 下载地址https://hub.docker.com/r/opensecurity/mobile-security-framework-mobsf/ setup 两行即可 1 docker pull opensecurity/mobile-security-framework-mobsf…...
Gophish+EwoMail 自建钓鱼服务器
GophishEwoMail 自建钓鱼服务器 文章目录 GophishEwoMail 自建钓鱼服务器1.前提准备2.搭建EwoMail邮件服务器1)Centos7 防火墙操作2)设置主机名3)host配置4)安装EwoMail5)获取DKIM6)端口服务介绍7ÿ…...
Dockerfile(5) - CMD 指令详解
CMD 指定容器默认执行的命令 # exec 形式,推荐 CMD ["executable","param1","param2"] CMD ["可执行命令", "参数1", "参数2"...]# 作为ENTRYPOINT的默认参数 CMD ["param1","param…...
使用 Gradle 版本目录进行依赖管理 - Android
/ 前言 / 在软件开发中,依赖管理是一个至关重要的方面。合理的依赖版本控制有助于确保项目的稳定性、安全性和可维护性。 Gradle版本目录(Version Catalogs)是 Gradle 构建工具的一个强大功能,它为项目提供了一种集中管理依赖…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...
SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...
数据结构:递归的种类(Types of Recursion)
目录 尾递归(Tail Recursion) 什么是 Loop(循环)? 复杂度分析 头递归(Head Recursion) 树形递归(Tree Recursion) 线性递归(Linear Recursion)…...
沙箱虚拟化技术虚拟机容器之间的关系详解
问题 沙箱、虚拟化、容器三者分开一一介绍的话我知道他们各自都是什么东西,但是如果把三者放在一起,它们之间到底什么关系?又有什么联系呢?我不是很明白!!! 就比如说: 沙箱&#…...
HTML中各种标签的作用
一、HTML文件主要标签结构及说明 1. <!DOCTYPE html> 作用:声明文档类型,告知浏览器这是 HTML5 文档。 必须:是。 2. <html lang“zh”>. </html> 作用:包裹整个网页内容,lang"z…...
