什么是doecker,一篇文章就够了
创始人
2024-06-02 06:12:36
0

文章目录

  • 一、Docker的诞生:容器技术VS虚拟机
  • 二、Docker的Windows10安装
  • 三、Docker架构,以及操作流程
  • 四、Docker命令大全
  • 五、通过Dockerfile定制镜像
  • 六、Docker的底层实现

一、Docker的诞生:容器技术VS虚拟机

假设你们公司正在秘密研发下一个“今日头条”APP,我们姑且称为明日头条,程序员自己从头到尾搭建了一套环境开始写代码,写完代码后程序员要把代码交给测试同学测试,这时测试同学开始从头到尾搭建这套环境,测试过程中出现问题程序员也不用担心,大可以一脸无辜的撒娇,“明明在人家的环境上可以运行的”。

测试同学测完后终于可以上线了,这时运维同学又要重新从头到尾搭建这套环境,费了九牛二虎之力搭建好环境开始上线,糟糕,上线系统就崩溃了,这时心理素质好的程序员又可以施展演技了,“明明在人家的环境上可以运行的”。

从整个过程可以看到,不但我们重复搭建了三套环境还要迫使程序员转行演员浪费表演才华,典型的浪费时间和效率,聪明的程序员是永远不会满足现状的,因此又到了程序员改变世界的时候了,容器技术应运而生。

有的同学可能会说:“等等,先别改变世界,我们有虚拟机啊,VMware好用的飞起,先搭好一套虚拟机环境然后给测试和运维clone出来不就可以了吗?”

在没有容器技术之前,这确实是一个好办法,只不过这个办法还没有那么好。

先科普一下,现在云计算其底层的基石就是虚拟机技术,云计算厂商买回来一堆硬件搭建好数据中心后使用虚拟机技术就可以将硬件资源进行切分了,比如可以切分出100台虚拟机,这样就可以卖给很多用户了。

你可能会想这个办法为什么不好呢?

我们知道和一个单纯的应用程序相比,操作系统是一个很重而且很笨的程序,简称笨重,有多笨重呢?

我们知道操作系统运行起来是需要占用很多资源的,大家对此肯定深有体会,刚装好的系统还什么都没有部署,单纯的操作系统其磁盘占用至少几十G起步,内存要几个G起步。

假设我有一台机器,16G内存,需要部署三个应用,那么使用虚拟机技术可以这样划分:
在这里插入图片描述
在这台机器上开启三个虚拟机,每个虚拟机上部署一个应用,其中VM1占用2G内存,VM2占用1G内存,VM3占用了4G内存。

我们可以看到虚拟本身就占据了总共7G内存,因此我们没有办法划分出更过虚拟机从而部署更多的应用程序,可是我们部署的是应用程序,要用的也是应用程序而不是操作系统。

如果有一种技术可以让我们避免把内存浪费在“无用”的操作系统上岂不是太香?这是问题一,主要原因在于操作系统太重了。

还有另一个问题,那就是启动时间问题,我们知道操作系统重启是非常慢的,因为操作系统要从头到尾把该检测的都检测了该加载的都加载上,这个过程非常缓慢,动辄数分钟,因此操作系统还是太笨了。

那么有没有一种技术可以让我们获得虚拟机的好处又能克服这些缺点从而一举实现鱼和熊掌的兼得呢?

答案是肯定的,这就是容器技术。

注意:容器是一种通用技术,docker只是其中的一种实现

二、Docker的Windows10安装

Docker各版本安装教程

三、Docker架构,以及操作流程

1. 仓库(Repository)

  • 一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过 <仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。

2. 注册器(Registry)

  • 一个 Docker Registry 中可以包含多个仓库(Repository);

3. 镜像(Image)

  • 回忆一下虚拟机VM安装的时候是不是要导入centos镜像,这个centos镜像就是Image。其他的应用也有各自的镜像,例如MySQL等等。Image需要从Repository拉取到Docker容器中才能运行。

4. 容器(Container)

  • 镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

5. Dockerfile

  • Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

组件之间的执行流程
省流:Client端输入每一条docker命令,都有server端Docker daemon来执行
docker build
例如 docker build -t nginx:v3 .
当我们写完dockerfile交给docker“编译”时使用这个命令,那么client在接收到请求后转发给docker daemon,接着docker daemon根据dockerfile创建出“可执行程序”image。
在这里插入图片描述
docker pull
例如 docker pull ubuntu
你可以在Repository下载到别人编写好的image,这样你就不用自己编写dockerfile了。
在这里插入图片描述
docker run
例如 docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
Docker有了image后就可以运行程序了,接下来使用命令docker run,docker daemon接收到该命令后找到具体的image,然后加载到内存开始执行,image执行起来就是所谓的container。
在这里插入图片描述

四、Docker命令大全

参考文章:菜鸟教程Docker容器使用

五、通过Dockerfile定制镜像

1. 在一个空目录下,新建一个名为Dockerfile文件,并添加以下内容

FROM nginx
RUN echo '这是一个本地构建的nginx镜像' > /usr/share/nginx/html/index.html

这里仅仅对Dockerfile定制镜像流程做简单介绍,具体语法读者自行搜索
在这里插入图片描述

2. 开始构建镜像
在 Dockerfile 文件的存放目录下,执行构建动作。

通过目录下的 Dockerfile 构建一个 nginx:v3(镜像名称:镜像标签)

最后的 . 代表本次执行的上下文路径

docker build -t nginx:v3 .

在这里插入图片描述
以上显示,说明已经构建成功。

六、Docker的底层实现

  • NameSpace
    我们知道Linux中的PID、IPC、网络等资源是全局的,而NameSpace机制是一种资源隔离方案,在该机制下这些资源就不再是全局的了,而是属于某个特定的NameSpace,各个NameSpace下的资源互不干扰,这就使得每个NameSpace看上去就像一个独立的操作系统一样,但是只有NameSpace是不够。

  • Control groups
    虽然有了NameSpace技术可以实现资源隔离,但进程还是可以不受控的访问系统资源,比如CPU、内存、磁盘、网络等,为了控制容器中进程对资源的访问,Docker采用control groups技术(也就是cgroup),有了cgroup就可以控制容器中进程对系统资源的消耗了,比如你可以限制某个容器使用内存的上限、可以在哪些CPU上运行等等。

    有了这两项技术,容器看起来就真的像是独立的操作系统了。

相关内容

热门资讯

泰戈尔感恩母亲的诗歌 泰戈尔感恩母亲的诗歌  导语:泰戈尔感恩生命,顺理而下,当然感恩直接哺育婴儿长大成人的母亲。以下小编...
有这样一群人诗歌 有这样一群人诗歌  城市街道上有这样一群人  他们的衣着很特别,很显然,是统一的橙色加银黄  他们的...
江城梅花引·老来难诗歌 江城梅花引·老来难诗歌  江城梅花引·老来难(依韵和柳知章行《江城梅花引·老龄化》)  人人皆说老来...
闻王昌龄左迁龙标遥有此寄全诗...   导语:闻王昌龄左迁龙标遥有此寄这首诗是李白听闻王昌龄路过五溪这个地方而作的,将自己的祝福随着风陪...
歌颂母亲的诗歌 歌颂母亲的诗歌(15篇)  无论在学习、工作或是生活中,许多人都接触过一些比较经典的诗歌吧,诗歌具有...
小学生诗歌朗诵春天 小学生诗歌朗诵春天  春天像小姑娘,花枝招展的,笑着,走着。  1、《春天的集会》  冬天刚过,  ...
诗词之源早于《诗经》 诗词之源早于《诗经》  大量史料说明,中国诗歌的星宿之海应上溯一千年,虞舜时代的《卿云歌》和《南风歌...
在我最想你的时候爱情诗歌 在我最想你的时候爱情诗歌  在我最想你的时候  默然夕拾  夜深了  几乎绣花针掉到地上  都能发出...
谢灵运山水诗对李白的创作影响 谢灵运山水诗对李白的创作影响  东晋诗人谢灵运,作为中国古典诗歌山水诗派的开创者之一,在晋宋之交,为...
永远的守巢人诗歌_歌颂老师   又到毕业季,又有不少的孩子即将离开那个呵护了他们三年的小乐园,开始第一次学会和朋友们说再见。下面...
小学生抗疫情诗歌 小学生抗疫情诗歌  无论是身处学校还是步入社会,大家一定没少看到经典的诗歌吧,诗歌语言言简义丰,具有...
忘不掉你的承诺诗歌 忘不掉你的承诺诗歌  当自己心中的那个他走了之后,  让人最难忘记的是“记忆”  因为,  那一段记...
你是我心中永远的痛爱情诗歌 你是我心中永远的痛爱情诗歌  你我曾经  肩并肩、手牵着手徜徉在花丛中  一起观赏人间的四季美景  ...
爱情的诗歌 有关爱情的诗歌  在平时的学习、工作或生活中,大家都看到过许多经典的诗歌吧,诗歌是按照一定的音节、韵...
适合过年听的欢快的歌曲 适合过年听的欢快的歌曲  过年期间都是一个很喜庆的时间,很多店铺商场都开始放一些音乐去吸引客人或者说...
醉生梦死诗歌 醉生梦死诗歌醉生梦死诗歌1  禁果的滋味  苦涩而甜蜜  人生第一次爱过  不知不觉已成悲伤之人  ...
《雨说》诗歌 《雨说》诗歌  在平日的学习、工作和生活里,许多人都接触过一些比较经典的诗歌吧,诗歌饱含丰富的感情和...
蜗行诗歌 蜗行诗歌  在生活、工作和学习中,大家总免不了要接触或使用诗歌吧,诗歌在形式上,不是以句子为单位,而...
国庆节的诗歌 关于国庆节的诗歌再过几天就是十月一号的国庆节了,自古以来,吟诗作赋是文人对节日的表达感情方式之一。下...
歌颂伟大的母亲党成立100周... 弹指间,2021年来了,我们伟大的母亲中国共产党也走过了100年,那歌颂伟大的母亲中国共产党成立10...