Docker简单理解

一、虚拟机和容器的区别

背景:现在物理服务器很强大,如果我们在一台物理服务器上只跑一个服务就浪费了,而同时跑多个服务他们又会互相影响。所以得把每个服务都隔离起来,让他们只使用自己那部分有限的cpu,内存和磁盘,以及自己的依赖包。早起有了虚拟机,但是太占内存,于是就有了Docker,一个机器上可以安装十几个到几十个docker,他们共享操作系统核心,占用资源少,启动速度快。但又能提供CPU、内存、磁盘等一定程度的隔离。

虚拟机:就是在我的操作系统中装一个软件,然后通过这个软件,再模拟出一台甚至多台的“子电脑”出来。需要模拟整台机器包括硬件,每台虚拟机拥有自己的操作系统。每个虚拟机与虚拟机之间的相互隔离的,互不影响。

容器:轻量的虚拟化。不需要模拟出整个操作系统,只需要虚拟一个小规模的环境。和我们宿主机共享硬件资源及操作系统。容器在宿主操作系统中,在用户控件以分离的进程运行。

二、对Docker的理解

第一:"Build,Ship and Run"  ===》 "搭建、发送、运行"

【搭建】:我来到一片空地,想建个房子,于是我搬石头、砍木头、画图纸,一顿操作,终于把这个房子盖好了。

问题:结果,我住了一段时间,想搬到另一片空地去。这时候,按以往的办法,我只能再次搬石头、砍木头、画图纸、盖房子

【发送】:跑来一个老巫婆,教会我一种魔法,可以把我盖好的房子复制一份,做成“镜像”,放在我的揹包里。

【运行】:等我到了另一片空地,就用这个“镜像”,复制一套房子,摆在那边,拎包入住。

第二:"Build once,Run anywhere"  ==》 "搭建一次,到处能用"

相当于我盖了别墅,生成了镜像。另一个哥们盖了四合院,也生成了镜像。还有个哥们,盖了个茅草屋,也生成了镜像。我们可以交换镜像。

三、Docker的三大核心概念

镜像:相当于Linux的快照。放在包里的镜像就是Docker镜像。是一个特殊的文件系统,除了提供容器运行时所需要的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(例如环境变量).镜像不包含任何动态数据,起内容在构建之后也不会被改变。也就是说,每次变出房子,房子是一样的,但生活用品之类的都不管,谁用谁负责添置。

仓库:相当于git仓库。我的揹包就是Docker仓库。

容器:相当于虚拟机。在空地上用魔法造好房子,就是Docker容器。

四、Docker运行镜像流程

docker pull:拉取某个镜像(先在本地检查我们想要拉取的版本镜像,如果有不作操作。本地没有就去Docker仓库去找我们要拉取的镜像名字,如果找到了就会由docker仓库把我们要的镜像传送到本地)
docker run:把镜像运行起来变成Docker容器(先在本地检查镜像在本机是否存在,不存在做一遍docker pull的操作,镜像下载回来后运行变为Docker容器)

五、参考文档

https://www.runoob.com/docker/macos-docker-install.html

https://www.cnblogs.com/ECJTUACM-873284962/p/9789130.html

https://www.zhihu.com/question/28300645

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章