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

Docker(一)-认识Docker

1.docker理念

Docker是基于Go语言实现的云开源项目。
Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装,分发,部署,运行等生命周期的管理,使用户的应用及其运行环境能够做到”一次镜像,处处运行“。避免因为配置环境不一样,版本缺失,第三方引入包的依赖不同导致的各种发布上线的问题。

2.Docker与传统虚拟化方式的不同

1.传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程。
2.容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核且也没有进行硬件虚拟。因此容器比传统虚拟机更为轻便。
3.每个容器之间互相隔离,每个容器有自己的文件系统,容器之间进程不会相互影响,能区分计算资源。

3.Docker优势

1.更快速的应用交付和部署。
2.更便捷的升级和扩缩容。
3.更简单的系统运维。
4.更高效的计算资源利用。

4.Docker的基本组成(三要素)

以java为例:镜像就是java类,容器就是通过类模板new出来的一个个实例对象,仓库就是存放镜像的地方。

在这里插入图片描述

1.镜像(image):
一个只读模板。镜像可以用来创建Docker容器,一个镜像可以创建多个容器。 
2.容器(Container):
2.1:面向对象角度:
Docker利用容器独立运行的一个或一组应用,应用程序或服务运行在容器里面,容器就类似于一个虚拟化的运行环境,
容器是用镜像创建的运行实例。就像java中的类和实例对象一样,镜像是静态的定义,容器时镜像运行时的实体。
容器为镜像提供了一个标准的和隔离的运行环境,它可以被启动,开始,停止,删除。每个容器都是相互隔离的、保证安全的平台。
2.2:镜像容器角度:
可以把容器看做是一个简易版的Linux环境(包括root用户权限,进程空间,用户空间和网络空间等)和运行在其中的应用程序。
3.仓库(repository):
集中存放镜像文件的场所(Docker Hub)。
总结:
Docker本身是一个容器运行载体或称之为管理引擎。我们把应用程序和配置依赖打包好形成一个可交付的运行环境。
这个打包好的运行环境就是image镜像文件。只有通过这个镜像文件才能生成Docker容器实例(类似java中new出来的对象)。
image(镜像)文件可以看作是容器的模板。Docker根据image(镜像)文件生成容器的实例。同一个image(镜像)文件可以生成多个同时运行的容器实例。

5.Docker工作原理

Docker是一个Client-Server结构的系统,Docker守护进程运行在主机上,然后通过Socket连接从客户端访问,
守护进程从客户端接收命令并管理运行在主机上的容器。容器是一个运行时环境。
以Mysql举例:客户端比如 小海豚。连上后台守护进程(mysql服务),进行mysql各种表操作。Docker:通过客户端连接后台守护进程(docker引擎),操作redis,mysql等镜像文件形成容器实例各自运行。 

相关文章:

  • 【PL理论】(24) C- 语言:有块的作用域 | 更新的语法 | 新的语义域 | 环境 vs. 内存
  • SQLite JDBC驱动程序
  • SQL RIGHT JOIN 详解
  • 蚂蚁集团:2023年科研投入211.9亿元
  • LabVIEW图像采集处理项目中相机选择与应用
  • 目标检测算法YOLOv10简介
  • whisper 模型源码解读
  • JavaScript-转换成布尔型
  • 短视频矩阵系统/源码搭建---拆解热门视频功能开发上线
  • 如何选择合适的大模型框架:LangChain、LlamaIndex、Haystack 还是 Hugging Face
  • 【Linux硬盘读取】Windows下读取Linux系统的文件解决方案:Linux Reader4.5 By DiskInternals
  • GitLab教程(二):快速上手Git
  • k8s学习--kubernetes服务自动伸缩之垂直伸缩(资源伸缩)VPA详细解释与安装
  • 【机器学习】机器学习重要分支——强化学习:从理论到实践
  • 【git使用三】git工作机制与命令用法
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • go append函数以及写入
  • Joomla 2.x, 3.x useful code cheatsheet
  • Median of Two Sorted Arrays
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • oschina
  • Redis在Web项目中的应用与实践
  • webpack入门学习手记(二)
  • 仿天猫超市收藏抛物线动画工具库
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 基于web的全景—— Pannellum小试
  • 前端临床手札——文件上传
  • 人脸识别最新开发经验demo
  • 如何设计一个比特币钱包服务
  • 深入 Nginx 之配置篇
  • 温故知新之javascript面向对象
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • "无招胜有招"nbsp;史上最全的互…
  • #14vue3生成表单并跳转到外部地址的方式
  • #Datawhale AI夏令营第4期#AIGC方向 文生图 Task2
  • (3)STL算法之搜索
  • (C#)一个最简单的链表类
  • (C)一些题4
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (笔试题)分解质因式
  • (二)PySpark3:SparkSQL编程
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (分类)KNN算法- 参数调优
  • (附源码)php新闻发布平台 毕业设计 141646
  • (过滤器)Filter和(监听器)listener
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (一一四)第九章编程练习
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • ./configure,make,make install的作用(转)
  • .NET 4.0中的泛型协变和反变
  • .Net 6.0--通用帮助类--FileHelper
  • .NET 药厂业务系统 CPU爆高分析
  • .NET企业级应用架构设计系列之开场白