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

Docker技术概论(2):Docker环境的搭建

Docker技术概论(2)
Docker环境的搭建

- 文章信息 - Author: 李俊才 (jcLee95)
Visit me at: https://jclee95.blog.csdn.net
My WebSitehttp://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安装与配置。

在这里插入图片描述


上一节:《 Docker与虚拟化技术比较 | 下一节:《 Docker 中的基本概念


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命令来检验是否安装成功

在这里插入图片描述

2.2 针对于比较旧的Ubuntu版本

对于某些较旧的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系统上。

在这里插入图片描述

3. 在Windows上安装Docker

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

在这里插入图片描述

在这里插入图片描述

等待下载完成:

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

4. 不要在MacOS上学习Docker

这里我打算介绍在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&#xf…...

种花

分情况&#xff1a; 第一盆k种选择&#xff0c;之后全部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:导航编程语言景观

在当今构建软件时&#xff0c;开发者在编程语言上有着丰富的选择。两种脱颖而出的语言是 Go 和 Rust - 都很强大但却截然不同。本文将从各种因素比较这两种语言&#xff0c;以帮助您确定哪种更适合您的需求。 我们将权衡它们在并发、安全性、速度、互操作性等方面的方法。我们将…...

包管理工具之npm也慌了?

起因 因为npm的种种问题,我很早就换成了pnpm和yarn(但是其实npm也在使用),已经很久没有关注npm的功能更新了。最近无意间进入Node18版本的安装目录,发现其除了常规的node,npm等默认安装了一个新的包corepack,这个就是今天我要分享的东西了。 注: 我因为18版本的node上…...

mobile app 安全扫描工具MobSF了解下

可以干啥&#xff1a; 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&#xff09;Centos7 防火墙操作2&#xff09;设置主机名3&#xff09;host配置4&#xff09;安装EwoMail5&#xff09;获取DKIM6&#xff09;端口服务介绍7&#xff…...

Dockerfile(5) - CMD 指令详解

CMD 指定容器默认执行的命令 # exec 形式&#xff0c;推荐 CMD ["executable","param1","param2"] CMD ["可执行命令", "参数1", "参数2"...]# 作为ENTRYPOINT的默认参数 CMD ["param1","param…...

使用 Gradle 版本目录进行依赖管理 - Android

/ 前言 / 在软件开发中&#xff0c;依赖管理是一个至关重要的方面。合理的依赖版本控制有助于确保项目的稳定性、安全性和可维护性。 Gradle版本目录&#xff08;Version Catalogs&#xff09;是 Gradle 构建工具的一个强大功能&#xff0c;它为项目提供了一种集中管理依赖…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

Android Wi-Fi 连接失败日志分析

1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分&#xff1a; 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析&#xff1a; CTR…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄

文&#xff5c;魏琳华 编&#xff5c;王一粟 一场大会&#xff0c;聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中&#xff0c;汇集了学界、创业公司和大厂等三方的热门选手&#xff0c;关于多模态的集中讨论达到了前所未有的热度。其中&#xff0c;…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

【HTTP三个基础问题】

面试官您好&#xff01;HTTP是超文本传输协议&#xff0c;是互联网上客户端和服务器之间传输超文本数据&#xff08;比如文字、图片、音频、视频等&#xff09;的核心协议&#xff0c;当前互联网应用最广泛的版本是HTTP1.1&#xff0c;它基于经典的C/S模型&#xff0c;也就是客…...