Docker学习笔记(一):入门篇,Docker概述、基本组成等,对Docker有一个初步的认识

前言

记录时间 [2024-4-5]


在先前的文章中,笔者进行了Windows系统下YOLOv8模型的简单测试,并由此引发思考:是否能尝试将此模型运行在Linux中呢?又或者,运行在Docker中。关于Docker的学习就这么展开了。

本文便是有关Docker入门的开篇之作,进行Docker概述,期待读者能够从一无所知到对Docker有一个初步的认识

文章为零基础学习Docker做了一些准备:

  • Docker学习视频(狂神说系列)
  • Docker官方文档(官方文档超级详细)
  • Docker远程仓库(相当于镜像商店)

Docker 概述


那么,Docker为什么会出现呢?

相信大家对于环境这个词一定很熟悉吧,开发的项目需要在特定的环境中运行,而有些环境的配置极其复杂,给运维造成一定的困难。而Docker,就是解决问题的关键所在。

Docker是一个开源的应用容器引擎,基于Go语言开发,其核心思想在于隔离,即:将项目+它所需要的运行环境打包安装在各自的箱子里,每个箱子互相隔离。

Docker通过隔离机制,能极大提升服务器的利用率。

Docker广泛运用于开发和运维,能很好地解决环境搭建的麻烦,避免多个应用端口冲突。通过下载发布的镜像,几乎能实现一套流程完成“开发、打包、部署、上线”。


Docker 历史


2010 年,Solomon Hykes和朋友们在美国旧金山成立了一家公司dotCloud,最初主要提供基于LXC (Linux Container)PaaS云计算服务。他们将自己的技术,即容器化技术,命名为Docker

然而,在诞生之初,Docker并没有引起行业的注意,直到 2013 年Docker开源,开源当月发布了Docker 0.1版本,此后每个月Docker都会更新一个版本。后来,越来越多的使用者发现了它的优点,于是它火了。

2014 年 6 月 9 日,Docker 1.0版本正式发布!


Docker 优势(对比虚拟机)


Docker为什么会这么火?因为它十分轻巧。

纵观虚拟化技术的发展,在Docker容器技术问世前,虚拟机技术的使用占主导。在Windows操作系统中安装Vmware软件,再由该软件虚拟出一台或多台电脑(Linux Centos原生镜像),这些虚拟出来的电脑即为虚拟机。而一台虚拟机的内存往往占好几个G,运行起来非常笨重,更何况实现隔离需要开启多个虚拟机。


如图,图片来源,VM会模拟出一台完整的电脑,造成了资源和内存的浪费。而Docker每个项目运行在单独的容器里,且容器直接运行在OS之上。容器化技术不是模拟一个完整的操作系统。

Docker的抽象层比VM少,运行比VM快。

在这里插入图片描述


虚拟机技术缺点:

  • 资源占用多
  • 冗余步骤多
  • 启动很慢

Docker和虚拟机技术的不同之处:

  • 传统虚拟机,虚拟出一套硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件。
  • 容器内的应用直接运行在宿主机的内核,容器没有自己的内核,也没有虚拟硬件,因此十分轻巧。
  • 不同容器之间互相隔离,每个容器内都有一个属于自己的文件系统,互不影响,因而安全。

虚拟化技术镜像实现隔离内存启动时间
VMLinux Centos原生镜像(一个电脑)需要开启多个虚拟机G级别分钟级
Docker镜像(最核心的环境)运行镜像即可M级别秒级

我们将容器技术虚拟机技术进行对比,不难看出,Docker容器技术的优势明显。可以说,开发人员需要掌握这项技术。


Docker 作用(能干嘛)

DevOps(开发、运维)


更快速的应用交付和部署

  • 传统:一堆帮助文档,安装程序;
  • Docker:打包镜像发布测试,一键运行。

更便捷的升级和扩缩容

  • 使用Docker之后,可以将应用部署到多个容器中;
  • 一个服务器上能运行多个容器,容器之间可以交互;
  • 方便应用升级和扩展。

更简单的系统运维

  • 保证开发/测试环境的高度一致。

更高效的资源利用

  • Docker是内核级别的虚拟化,在一个物理机上可以运行多个容器实例,服务器的性能可以被压榨到极致。

Docker 基本组成


如图(图片来源网络),Docker客户端、服务器,和远程仓库三部分组成,在Docker守护进程中包含镜像和容器,一个镜像可以运行在多个不同的容器中。基本过程:客户端启动Docker服务,去远程仓库拉取镜像,然后运行在容器中。


在这里插入图片描述


镜像image

  • Docker镜像类似于模板,通过这个模板可以创建容器服务。如:tomcat镜像 ==> run ==> tomcat01容器(容器提供服务)
  • 通过这个镜像可以创建多个容器,最终服务/项目运行在容器中。

容器container

  • 容器相当于一个简易的Linux系统;
  • 通过镜像来创建容器,在容器中可独立运行一个/一组应用;
  • 基本命令:启动/停止/删除…

仓库repository

  • 仓库是存放镜像的地方,分为公有仓库和私有仓库;
  • 默认是国外的:Docker Hub
  • 配置镜像加速:阿里云容器服务。

总结


本文进行了Docker概述,介绍其历史、优势、作用,以及基本组成。通过此,相信大家对Docker有了一个初步的认识。接下来就进入Docker的安装和基本命令使用了。


一些参考资料


狂神说系列Docker教程:https://www.bilibili.com/video/BV1og4y1q7M4/

Docker官网:https://www.docker.com/

Docker官方文档:https://docs.docker.com/engine/install/centos/

Docker远程仓库:https://hub.docker.com/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/809881.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RX8130CE为用户提供带复位延迟和主备电管理的解决方案

实时时钟作为设备的精确时钟来源,其作用如同人的心脏,为设备提供准确稳定的心跳.而便携式设备由于应用场景多变,所以对内部元器件要求也相对较高,这就对作为核心器件的实时时钟模块提出不少挑战。世强代理品牌EPSON实时钟模块产品…

【Linux】开始了解重定向

送给大家一句话: 人真正的名字是:欲望。所以你得知道,消灭恐惧最有效的办法,就是消灭欲望。 – 史铁生 《我与地坛》 开始了解重定向 1 前言2 重定向与缓冲区2.1 文件描述符分配规则2.2 重定向的现象2.3 重定向的理解2.4 缓冲区…

5.6 mybatis之RowBounds分页用法

文章目录 mybatis 中,使用 RowBounds 进行分页,非常方便,不需要在 sql 语句中写 limit,即可完成分页功能。但是由于它是在 sql 查询出所有结果的基础上截取数据的,所以在数据量大的sql中并不适用,它更适合在…

【Python】OPC UA 服务器扫描工具

引言 OPC UA(开放平台通信统一架构)是一种跨平台的、开放的数据交换标准,广泛用于工业自动化领域。在工业4.0的大背景下,OPC UA服务器在网络中的部署日益增多,如何快速有效地发现这些服务器成为了一个实际需求。本文将…

UI自动化测试重点思考(下)--装饰器/生成器/夹具的使用/描述符的作用/ddt驱动/多线程

UI自动化测试重点思考--装饰器 装饰器装饰器定义装饰器代码示例装饰器的执行如何将装饰器融合到pytest框架里面 生成器创建生成器生成器的定义如何将生成器融合到pytest框架里面 fixture(夹具)使用pytest fixture 中 scope 参数的详细解释 描述符的总结描…

【Sentinel的限流使用】⭐️SpringBoot整合Sentinel实现Api的限流

目录 前言 一、Sentinel下载 二、SpringBoot 整合 Sentinel 三、流控规则 章末 前言 小伙伴们大家好,上次使用OpenFeign时用到了 Hystrix实现熔断和限流的功能,但是发现该工具已经停止维护了,于是想到了Spring Cloud Alibaba开发的Sentin…

高创新 | Matlab实现OOA-CNN-GRU-Attention鱼鹰算法优化卷积门控循环单元注意力机制多变量回归预测

高创新 | Matlab实现OOA-CNN-GRU-Attention鱼鹰算法优化卷积门控循环单元注意力机制多变量回归预测 目录 高创新 | Matlab实现OOA-CNN-GRU-Attention鱼鹰算法优化卷积门控循环单元注意力机制多变量回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现OOA…

如何在CentOS7.x上生成自签名SSL证书

在配置HTTPS连接时,SSL证书是确保数据传输安全性的关键组件。自签名证书是一种不通过证书颁发机构(CA)签发的证书,适用于测试和内部使用。以下是在CentOS 7.x系统上生成自签名证书的详细步骤。 1. 安装OpenSSL OpenSSL是一个强大…

【嵌入式学习】ARM day04.11

一、思维导图 二、练习 实现三个灯闪烁 汇编代码 .text .global _start _start: 使能GPIOE和F时钟LDR r0,0x50000A28LDR r1,[R0]ORR R1,R1,#(0X3<<4)STR R1,[R0]配置GPIOE和F的MODER寄存器LDR r0,0x50006000 GPIOELDR R1,0X50007000 G…

顶顶通呼叫中心中间件-回铃音补偿(mod_cti基于FreeSWITCH)

顶顶通呼叫中心中间件-回铃音补偿(mod_cti基于FreeSWITCH) 回铃音的用处 回铃音&#xff1a; 当别人打电话给你时&#xff0c;你的电话响铃了&#xff0c;而他听到的声音叫做回铃音。回铃音是被叫方向主叫方传送&#xff0c;也是彩铃功能的基础。我们平时打电话听到的“嘟 嘟…

【C++进阶】C++异常详解

C异常 一&#xff0c;传统处理错误方式二&#xff0c;C处理的方式三&#xff0c;异常的概念四&#xff0c;异常的使用4.1 异常和捕获的匹配原则4.2 函数调用链中异常栈展开匹配原则4.3 异常的重新抛出&#xff08;异常安全问题&#xff09;4.4 RAII思想在异常中的作用 五&#…

2024 Mathorcup高校数学建模挑战赛(B题)| 甲骨文识别 | 建模秘籍文章代码思路大全

铛铛&#xff01;小秘籍来咯&#xff01; 小秘籍团队独辟蹊径&#xff0c;以CNN卷积神经网络&#xff0c;计算机视觉等强大工具&#xff0c;构建了解决复杂问题的独特方案。深度学习, 混沌模型的妙用&#xff0c;为降低非法野生动物贸易提供新视角。通过综合分析&#xff0c;描…

IP广播对讲系统停车场解决方案

IP广播对讲系统停车场解决方案 一、需求分析 随着国民经济和社会的发展&#xff0c; 选择坐车出行的民众越来越多。在保护交通安全的同时&#xff0c;也给停车场服务部门提出了更高的要求。人们对停车场系统提出了更高的要求与挑战&#xff0c; 需要停车场系统提高工作效率与服…

01-Git 之快速入门操作本地仓库

https://learngitbranching.js.org/?localezh_CN在线练习git 1. Git 安装好Git以后, 先检查是否已经绑定了用户名和邮箱 git config --list1.1 为什么要使用版本控制&#xff1f; 从个人角度&#xff1a; 在做项目时&#xff0c;如果一点点去改代码会很乱&#xff0c;不利…

OpenCV4.9更多形态转换

返回&#xff1a;OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇:OpenCV4.9处理平滑图像 下一篇:OpenCV4.9更多形态转换 基于这两者&#xff0c;我们可以对图像进行更复杂的转换。在这里&#xff0c;我们简要讨论 OpenCV 提供的 5 个操作&#xff1a; …

FreeBuf 全球网络安全产业投融资观察(3月)

综述 据不完全统计&#xff0c;2024年3月&#xff0c;全球网络安全市场共发生投融资事件53起&#xff0c;其中国内4起&#xff0c;国外49起。 3月全球络安全产业投融资统计表&#xff08;数据来源&#xff1a;航行资本、36氪&#xff09; 整体而言&#xff0c;国内4起投融资事…

AI写作软件哪个好?这4款好评如潮

在信息时代&#xff0c;AI技术的发展的日新月异&#xff0c;AI写作软件也因此诞生。特别是人们对于高效、便捷的写作工具需求日益增长&#xff0c;AI写作软件作为一种新兴的工具&#xff0c;在帮助人们提升写作效率、拓展创作思路方面发挥着越来越重要的作用。这些AI写作软件为…

C语言 函数——代码风格

目录 基本的代码规范 程序版式 对齐&#xff08;Alignment&#xff09;与缩进&#xff08;indent&#xff09; 变量的对齐规则 空行——分隔程序段落的作用 代码行内的空格——增强单行清晰度 代码行 长行拆分 标识符命名规则 标识符命名的共性规则 windows应用程序…

PostgreSQL入门到实战-第十八弹

PostgreSQL入门到实战 PostgreSQL中表连接操作(二)官网地址PostgreSQL概述PostgreSQL中表别名命令理论PostgreSQL中表别名命令实战更新计划 PostgreSQL中表连接操作(二) 了解PostgreSQL表别名及其实际应用程序。 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容…

19c数据库/dev/shm/过小导致pga内存不够

pga_aggregate_limit已经设置了120G&#xff0c;alert还是报内存不够 查询select * from v$pgastat&#xff0c;发现MGA占了80G内存 查看/dev/shm: 发现设置了7G&#xff0c;操作系统是512G&#xff0c;正常情况下/dev/shm应该是操作系统的一半&#xff0c;修改为250G后数据库…