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 构建工具的一个强大功能,它为项目提供了一种集中管理依赖…...
Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...
为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
多模态图像修复系统:基于深度学习的图片修复实现
多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...
LabVIEW双光子成像系统技术
双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制,展现出显著的技术优势: 深层组织穿透能力:适用于活体组织深度成像 高分辨率观测性能:满足微观结构的精细研究需求 低光毒性特点:减少对样本的损伤…...
如何做好一份技术文档?从规划到实践的完整指南
如何做好一份技术文档?从规划到实践的完整指南 🌟 嗨,我是IRpickstars! 🌌 总有一行代码,能点亮万千星辰。 🔍 在技术的宇宙中,我愿做永不停歇的探索者。 ✨ 用代码丈量世界&…...
当下AI智能硬件方案浅谈
背景: 现在大模型出来以后,打破了常规的机械式的对话,人机对话变得更聪明一点。 对话用到的技术主要是实时音视频,简称为RTC。下游硬件厂商一般都不会去自己开发音视频技术,开发自己的大模型。商用方案多见为字节、百…...
