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上下载,下载完成,再运行这个镜像。

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Apache JMeter 5.6.3 安装

源码下载 curl -O https://dlcdn.apache.org//jmeter/source/apache-jmeter-5.6.3_src.zipJMeter 下载 curl -O https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.6.3.zipjmeter.properties 里 设置中文 windows系统上解压,双击jmeter.bat 启动 执行参…

618快递准点到达,别忘了感谢它!

进入6月以来,全国快递日均业务量飞速上涨。 虽然618大促是电商的主场,但作为不可或缺的物流环节,为了这场年中大考,快递企业在此期间也使尽浑身解数,竞相比拼配送速度。那么,为了更快的时效,快递…

【基于Matlab GUI的语音降噪系统设计】

客户不要了,挂网上吧,有需要自行下载~ 赚点辛苦费 ** 功能实现: ** 1、导入音频文件/录入音频,能实现播放功能。 2、对导入/录入的音频信号进行时域和频域分析,并制图。 3、可在导入/录入的音频信号上加入噪声,并能够播…

零基础手把手教你创建微信小程序(十六)·事件传参·data-*自定义数据

事件传参:在触发事件时,将一些数据作为参数传递给事件处理函数的过程,就是事件传参。 在微信小程序中,我们经常会在组件上添加一些自定义数据,然后在事件处理函数中获取这些自定义数据,从而完成业务逻辑的开发。 在组件上通过data-"的方式定义需要传递的数据,其…

被通知回老家当农场主,没有经验的我用FarmOS系统抢先体验了一把!

网管小贾 / sysadm.cc 公司小Z过年回来就变得有点魔怔,工作积极性不高,天天话里话外总是唠叨着要辞职回老家种地! 老板让我去劝劝他,强调务必对齐颗粒度,说劝好了给我记上一功。 我也不知道之前的那些功啥时候能变现…

【动态规划专栏】

动态规划基础知识 概念 动态规划(Dynamic Programming,DP):用来解决最优化问题的算法思想。 动态规划是分治思想的延伸,通俗一点来说就是大事化小,小事化无的艺术。 一般来说,…

OpenAI钦点的“机器人界OpenAI”来了:成立不到两年估值破26亿美元

OpenAI们正在今年因AI而再次火热无比的机器人领域“复刻”一个OpenAI。 2024年2月23日,OpenAI、微软、贝佐斯风投、英伟达等总计18位投资公司向一家机器人公司注资了6.75亿美元,这家公司就是Figure AI。 Figure AI成立于2022年,两年不到经过…

(已解决)Unicode高位码点emoji表情无法解析

问题描述 我在制作游戏论坛项目,希望制作一个表情库,我参考了菜鸟的emoji手册,并且使fromCharCode函数来进行字符串转换,但是经过我的测试,对于超过5位数的高位码点,无法正常解析。 源码: &l…

WiFi模块引领零售数字化转型:智能零售体验再定义

随着科技的不断发展,零售业正迎来一场数字化转型的浪潮。在这个变革过程中,WiFi模块成为零售业中的关键技术,为商家提供了丰富的数字化工具,打造了更智能、便捷、个性化的零售体验。本文将深入探讨WiFi模块在零售数字化转型中的关…

学习使用paddle来构造hrnet网络模型

1、首先阅读了hrnet的网络结构分析,了解到了网络构造如下: 参考博文姿态估计之2D人体姿态估计 - (HRNet)Deep High-Resolution Representation Learning for Human Pose Estimation(多家综合)-CSDN博客 最…

Python的With...As 语句:优雅管理资源的技术探索【第116篇—With...As 语句】

Python的With…As 语句:优雅管理资源的技术探索 在Python编程中,with...as语句是一项强大而优雅的功能,用于管理资源,如文件、网络连接、数据库连接等。本文将深入介绍with...as语句的用法、其工作原理,并通过代码示例…

光子嫩肤仪面罩控制器PCB电路中升压恒流芯片FP7208的应用

护肤已经成为现代人日常生活中不可或缺的一部分,尤其对于追求美丽肌肤的人来说,寻找一款适合自己的护肤利器至关重要。 光子嫩肤仪作为一种高科技美容仪器,受到越来越多人的追捧。其中,FP7208LED升压驱动IC作为其核心部件之一&am…

TQ15EG开发板教程:创建运行petalinux2019.1

工程网盘链接:https://pan.baidu.com/s/1vFRpzmbifXt7GypU9aKjeg 提取码:0ylh 首先需要使用与petalinux相同版本的vivado创建工程,与之前不同的是在创建硬件设计时需要勾选上添加bit文件,所以要在生成bit文件之后再创建硬件设计…

谷粒商城【成神路】-【8】——商品上架

目录 1.数据模型封装 1.es数据模型 2.将es数据模型封装为JAVA bean 3.根据前端发送请求,编写controller 2.模型实现 2.1服务controller 2.2服务service 2.3服务远程调用接口 2.4检索服务controller 2.5检索服务保存到es 2.6库存查询服务 1.数据模型封装 1.es数据模…

银河麒麟之Workstation安装

一、VMware Workstation简介 VMware Workstation是一款由VMware公司开发的虚拟化软件,它允许用户在一台物理计算机上运行多个操作系统,并在每个操作系统中运行多个虚拟机。VMware Workstation提供了一个可视化的用户界面,使用户可以轻松创建、…

纵行科技荣登“中国物联网企业投资价值50强”、“中国物联网行业创新产品榜”

近日,由深圳市物联传媒有限公司、AIoT星图研究院、IOTE组委会、深圳市物联网产业协会主办的“2023‘物联之星’中国物联网行业年度榜单”评选结果正式公布。厦门纵行信息科技有限公司(以下简称“纵行科技”)最终从500多家参评企业中脱颖而出&…

数据库-ODBC操作

一、ODBC 数据源配置 打开ODBC数据源管理器: 在Windows搜索栏中键入“ODBC数据源”并选择“ODBC数据源(64位)”(如果你的系统是64位的)。如果你的系统是32位的,你可以选择“ODBC数据源(32位)”。或者,你可以在控制面…

使用DockerFile构建Tomcat镜像

1、准备镜像文件tomcat压缩包,jdk的压缩包 tomcat链接:https://pan.baidu.com/s/1Xpecb-BSGR2sdxSL7FDtBw?pwd1234 提取码:1234 jdk链接:https://pan.baidu.com/s/1mQHInn27j1I9uuuicBsyAA?pwd1234 提取码:1234 …

网工学习 DHCP配置-接口模式

网工学习 DHCP配置-接口模式 学习DHCP总是看到,接口模式、全局模式、中继模式。理解起来也不困难,但是自己动手操作起来全是问号。跟着老师视频配置啥问题没有,自己组建网络环境配置就是不通,悲催。今天总结一下我学习接口模式的…

信息系统安全与对抗-作业2

目录 1、使用自己姓名拼音创建一个账户, 并使用命令和图形化查看 2、使用自己拼音打头字母创建一个隐藏账户 ,并使用命令和图形化查看 3、使用命令启动 telnet 服务 4、使用命令打开防火墙 23 端口 5、熟悉LINUX系统,使用命令行创建用户…