Docker基础教程 - 1 Docker简介

更好的阅读体验:点这里 ( www.doubibiji.com

1 Docker简介

Docker是一个强大的容器化平台,让你能够更轻松地构建、部署和运行应用程序。

下面我们来学习 Docker。


1.1 Docker是什么

1 现在遇到的问题

  • 每次部署一台服务器,需要安装各种依赖,配置各种环境,十分麻烦;
  • 应用程序在我的电脑上运行完全没有问题,你说在你的电脑上不行,环境或配置不同导致的各种问题;
  • 由于开发、测试和生产环境配置不一致,导致在生产环境中出现了在开发环境中未曾出现的bug;
  • 一台服务器,硬件大部分时间处于闲置状态,资源被浪费;
  • 等等…

2 虚拟机技术

使用虚拟机,我们可以使用同一个镜像文件,创建多个虚拟机,多个虚拟机的环境和配置是一模一样的,这样就不会存在多个虚拟机环境不一样的问题了。

3 Docker是怎么解决的

Docker 和虚拟机的思路是类似的,Docker 将应用程序及其依赖项打包成镜像,镜像包含了应用程序所需的所有内容,包括代码、运行时环境、系统工具、库和依赖项。开发者可以在本地构建镜像,并将其部署到任何地方,无需担心环境差异导致的问题。

虚拟机技术将镜像运行为一个个独立的虚拟机,Docker 引擎将镜像运行成一个个的容器,每个容器也是相互隔离,互不影响,确保了应用程序的安全性和稳定性。

总的来说,Docker通过其容器化技术,将应用程序和运行它所需要的环境、依赖等打包成镜像,这样就没有环境问题了。

举个栗子:

我们可以直接下载 Redis 镜像,一条语句将镜像运行起来,就可以直接使用了,不需要复杂的安装。我们的项目需要 Redis、MySql、JDK、RabbitMQ,我们可以直接将项目、Redis、Mysql、JDK、RabbitMQ 所有的这些打包成一个镜像,部署在各个机器上,就不需要一个个服务器安装环境了,听着是多么的顺耳。

4 Docker与虚拟机技术的不同

  1. 虚拟化层次
  • 虚拟机技术: 使用Hypervisor(如VMware、VirtualBox等)在物理服务器上创建多个完整的虚拟机。每个虚拟机都包含了自己的操作系统、内核和用户空间,相互独立。
  • Docker: 利用宿主机的操作系统内核,并在其之上运行容器。容器与宿主机共享同一个操作系统内核,但各自拥有自己的用户空间。这使得容器更为轻量级。
  1. 资源利用方式
  • 虚拟机技术: 每个虚拟机需要独立的操作系统,因此较为笨重,占用更多资源。多个虚拟机在同一物理机上运行时,会占用更多的内存和硬盘空间,随随便便20、30G的占用空间。
  • Docker: 容器共享宿主机的操作系统,不需要额外的操作系统虚拟化,因此更为轻量级。它们利用相同的内核和资源,节省了资源,并允许更多容器在同一台机器上运行。
  1. 启动时间和性能
  • 虚拟机技术: 虚拟机启动需要较长时间,因为需要启动完整的操作系统。
  • Docker: 容器启动速度更快,因为它们不需要启动完整的操作系统,只需启动应用及其依赖项即可。
  1. 环境隔离
  • 虚拟机技术: 虚拟机提供了完全隔离的环境,每个虚拟机都是相对独立的。
  • Docker: 容器也提供了良好的隔离性,但与虚拟机相比,容器之间的隔离度略低。

总体来说,Docker相对于传统虚拟机技术更为轻量级、启动更快、资源利用更高效,因为它利用了宿主机的操作系统内核,并通过容器实现了更好的资源共享和隔离。使得应用程序能够更便捷、高效、一致地部署和运行,解决了环境一致性、快速部署、资源利用率、版本控制、隔离性等多个方面的问题。

1.2 Docker 三要素

在学习操作 Docker 之前,先介绍一下 Docker 中的基础概念。

  • 镜像
  • 容器
  • 仓库

先用一句话解释:我们从仓库中下载镜像,然后运行镜像成为容器,一个镜像可以运行多次形成多个容器实例。


1 镜像(image)

镜像是一个静态的、只读的文件,其中包含了应用程序运行所需的所有内容,如代码、运行时环境、系统工具、库和依赖项。它是一个模板,用来创建容器。

使用一个镜像可以创建多个容器。所以用面向对象的方式来比喻的话,镜像就是类,容器就是使用类创建的一个一个实例。


2 容器(container)

容器是镜像的运行时实例,相当于面向对象中的一个个的对象实例。

当你运行一个镜像时,Docker会创建一个容器。它提供了一个隔离的环境,让应用程序可以在其中运行。

所以容器可以被理解为一个隔离的、独立的运行时环境,其中包含了应用程序及其运行所需的一切。


3 仓库(repository)

仓库就是存放镜像的地方,仓库分为公有仓库和私有仓库。

Docker 公司提供了公共的镜像仓库 https://hub.docker.com,里面提供了大量的镜像可以给我们给我们使用,我们也可以基于别人的镜像来创建我们自己的镜像。但是国内访问 dockerhub 速度比较慢,一般使用阿里云或网易云。


在使用 docker run 运行镜像的时候,docker 会检查本机是否存在镜像,如果存在就使用这个镜像运行为一个容器,而如果不存在,就会去 Docker Hub上下载,下载完成,再运行这个镜像。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们一般不会直接运行一个本机不存在的镜像,我们一般会先搜索镜像,找到镜像后,将镜像下载下来,然后再通过镜像创建容器运行。

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

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

相关文章

CSS 入门指南(一)CSS 概述

CSS 概述 CSS 介绍 CSS(Cascading Style Sheets)通常称为 CSS 样式或层叠样式表,是一种用来为结构化文档(如 HTML 文档或 XML 应用)添加样式(字体、间距和颜色等)以及版面的布局等外观显示样式…

《MySQL数据库》day1

文章目录 1.名词解释2.如何启动mysql数据库3.mysql常用命令4.数据库当中最基本的单元是表:table5.关于SQL语句的分类6.简单查询7.条件查询8.排序9.数据处理函数单行处理函数常见的有哪些? 10.分组函数(多行处理函数) 1.名词解释 …

VUE2与VUE3之间的主要区别

当谈到 Vue.js 的版本时,Vue 2 和 Vue 3 是最常被提及的两个版本。下面是 Vue 2 和 Vue 3 之间的一些主要区别: 1. 性能提升: Vue 3 在底层核心重写了响应式系统,采用了 Proxy 对象,大幅提高了性能。Vue 3 还引入了静…

彻底解决华为手机安装谷歌框架后出现未认证的弹窗问题

引言 本人使用华为手机通过B站等平台学习如何安装谷歌框架与商店后,发现安装谷歌框架后出现未认证的弹窗问题少有解决办法,而且容易复发,在借鉴相关视频后找到解决办法,但视频中的华谷框架需要付费才能使用,本文将提出…

spring注解驱动系列--自动装配

Spring利用依赖注入(DI),完成对IOC容器中中各个组件的依赖关系赋值;依赖注入是spring ioc的具体体现,主要是通过各种注解进行属性的自动注入。 一、Autowired:自动注入 一、注解介绍 1、默认优先按照类型去…

高中数学:函数奇偶性

一、定义 偶函数:定义域关于原点对称,图像关于Y轴对称 f(x)f(-x) 奇函数:定义域关于原点对称,图像关于原点中心对称 f(x)f(-x)0 等价于 f(-x)-f(x) 二、函数奇偶性的四种情况 注意: 即奇又偶的函数,只有…

Linux入门到入土

Linxu Linux 简介 Linux 内核最初只是由芬兰人林纳斯托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。 Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX(可移植操作系统接口&#xff09…

【复现】宏景HCM 任意文件读取漏洞_63

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一: 四.修复建议: 五. 搜索语法: 六.免责声明 一.概述 宏景HCM 将人才标签技术应用于员工招聘、人才选拔等环节,通过多维度的标签体系,形成不同专业序列的人才画…

CV | 医学影像上的图像分割模型调研【更新于20240304】

mamba相关的图像分割:VM-Unet,Manba-Unet,BRAU-Net,MDD-Unet,EGE-Unet,U-Mamba 2024.01.01_BRAU-Net Paper:BRAU-Net: U-Shaped Hybrid CNN-Transformer Network for Medical Image Segmentation https://arxiv.org/pdf/2401.00722.pdf 2024.01.09_U-Mamba Paper:U…

猴子吃桃问题(python版)

文章预览: 题目python解法一:运行结果 python解法二:运行结果 python解法三:运行结果 题目 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。 第二天早…

python 脚本设置输出颜色

在Python脚本中设置输出颜色,通常可以使用colorama库,它可以在Windows、Linux和macOS等平台上工作。colorama库扩展了Python的标准库,使得在控制台输出彩色文本更加简单。 首先,你需要安装colorama库。如果你还没有安装&#xff…

数据仓库 vs. 数据湖:解析两者的区别与优劣

在当今数字化时代,数据成为了企业最宝贵的资产之一。为了更好地管理和利用数据,企业需要建立合适的数据存储和管理系统。在这个过程中,数据仓库和数据湖成为了两种常见的选择。虽然它们都旨在帮助企业管理数据,但在实际应用中&…

flurl升级之后没有FlurlNewtonsoftJsonSerializer

新建NewtonsoftJsonSerializer.cs /// <summary> /// ISerializer implementation based on Newtonsoft.Json. /// Default serializer used in calls to GetJsonAsync, PostJsonAsync, etc. /// </summary> public class NewtonsoftJsonSerializer : IJsonSerial…

Qt 简约美观的加载动画 第九季

这次和大家分享6个非常清爽的加载动画. &#x1f60a; 效果如下 &#x1f60a; 一共三个文件 , 可以直接编译运行的呢 //main.cpp #include "LoadingAnimWidget.h" #include <QApplication> #include <QGridLayout> int main(int argc, char *argv[]) …

原理篇-- 定时任务xxl-job-服务端(admin)项目启动过程--JobTriggerPoolHelper 初始化 (3)

文章目录 前言一、JobTriggerPoolHelper 作用&#xff1a;二、JobTriggerPoolHelper 源码介绍&#xff1a;2.1. start() 方法&#xff1a;2.2 任务触发&#xff1a;2.3 XxlJobTrigger.trigger 任务执行&#xff1a;2.4 processTrigger 任务的执行&#xff1a;2.5 runExecutor 任…

【JAVA重要知识 | 第三篇】深入理解并暴打AQS原理、ReentrantLock锁

文章目录 3.深入理解AQS、ReentrantLock3.1AQS3.1.1AQS简介3.1.2核心结构&#xff08;1&#xff09;设计模型&#xff08;2&#xff09;组成部分&#xff08;3&#xff09;State关键字 3.1.3实现的两类队列&#xff08;1&#xff09;同步队列①CLH②Node③主要行为 img条件队列…

中霖教育:注册安全工程师考是科目有哪些?

注册安全工程师的类型是职业资格证书&#xff0c;需要满足报名条件才能参加考试&#xff0c;考试通过就能发放证书。报名时间一般在八月份&#xff0c;考试时间在十月底左右。 考试科目&#xff1a; 《安全生产法律法规》 《安全生产管理》 《安全生产技术基础》 《安全生…

golang实现openssl自签名双向认证

第一步&#xff1a;生成CA、服务端、客户端证书 1. 生成CA根证书 生成CA证书私钥 openssl genrsa -out ca.key 4096创建ca.conf 文件 [ req ] default_bits 4096 distinguished_name req_distinguished_name[ req_distinguished_name ] countryName …

Node.js基础---Express路由

1. 路由的概念 1. 什么是路由 广义上来讲&#xff0c;路由就是映射关系 2. Express 中的路由 在 Express 中&#xff0c;路由指的是客户端的请求与服务器处理函数之间的映射关系 Express 中的路由分三部分&#xff1a;请求的类型、请求的URL地址&#xff0c;处理函数。如下&am…

怎么使用curl2py自动构造爬虫代码并进行网络爬虫

目录 一、了解curl2py 二、安装curl2py 三、使用curl2py生成爬虫代码 四、实际案例&#xff1a;爬取网页数据 五、总结与建议 在当今数据驱动的时代&#xff0c;网络爬虫成为了获取数据的重要工具。对于初学者来说&#xff0c;手动编写爬虫代码可能是一项挑战。幸运的是&a…