docker入门2--生命周期
容器的概念:
一句话概括容器:容器就是将软件打包成标准化单元,以用于开发、交付和部署。
- 容器镜像是轻量的、可执行的独立软件包 ,包含软件运行所需的所有内容:代码、运行时环境、系统工具、系统库和设置。
- 容器化软件适用于基于Linux和Windows的应用,在任何环境中都能够始终如一地运行。
- 容器赋予了软件独立性,使其免受外在环境差异(例如,开发和预演环境的差异)的影响,从而有助于减少团队间在相同基础设施上运行不同软件时的冲突。
容器和虚拟化的区别:
通俗地讲,容器就是一个进程,它无法直接使用硬件资源,但自身又带着一堆类似于os的环境。从某种意义上讲,我们可以认为它是轻量级的虚拟化(当然,它和虚拟化最大的不同就在于无法直接使用硬件资源)。
下面打个表格,对比一下虚拟化和容器:

- 操作系统是对物理硬件进行抽象。它在上面搭建虚拟平台管理硬件,并安装虚拟机进行分配。每台vm都是一台独立的机器,所以它们包含内核、二进制、配置文件等;所以显得很臃肿。虽然很好管理,但是在应用层面,耦合性过高,一崩百崩。
- 容器是对应用层进行抽象。它在操作系统上运行守护进程(docker daemon),通过此守护进程来建立docker镜像,运行docker服务。同一台机器上面可以运行很多docker进程,而且它们可以做到互不干扰,从而保持低耦合的状态。但是问题就是,配置较为麻烦。

docker生命周期
docker包含三个基本概念:
- 镜像(Image)
- 容器(Container)
- 仓库(Repository)
他们之间的关系如下:

下面我们一个一个解释:
docker images(一个特殊的文件系统):
首先,docker images是基于一个叫做“union FS”的技术,它可以做到分层存储。也就是说,虽然docker镜像中包含一些环境配置,但是它只专注于自己本层的配置,而没有整体的所有文件(例如,笔者在拉取nginx镜像后,发现内部并没有vim)。这也是为了更好地分层,进行高可用和低耦合的操作。
docker container(镜像运行后的实体):
镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等 。
容器的本质就是一个进程。在它run起来后,会占用一部分系统资源,但是并不多。它与系统运行的进程不同的一点是,它有自己独立的namespace。也就是container id,而不是pid。我们可以通过docker命令来管理这些容器,比如,运行/删除/修改/查看等。
容器的存储层与容器的生命周期一样。这点应该注意,我们要切记,尽量不要在容器层跑存储。如果容器挂了,那么数据也就没了。如果一定要这样子,也应使用数据卷、绑定宿主目录等方式,跳过容器层存储,避免隐藏的麻烦。
docker repository(docker镜像仓库):
镜像构建完成后,可以很容易的在当前宿主上运行,但是, 如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry就是这样的服务。
一个Docker Registry中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。所以说:镜像仓库是Docker用来集中存放镜像文件的地方类似于我们之前常用的代码仓库。
通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本 。我们可以通过:的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以latest作为默认标签。
这边我还没研究到建立自己的镜像仓库,这有点太专业了。。。。。。搞不掂啊!!!
docker build/run/ship
docker build: 生成镜像的方法,通常由编写dockerfile来进行指引。
docker run:镜像->容器,造出实例来,让它运行,提供服务。
docker ship: 主机和仓库间运输,这里的仓库就像是超级码头一样。
Docker运行过程也就是去仓库把镜像拉到本地,然后用一条命令把镜像运行起来变成容器。所以,我们也常常将Docker称为码头工人或码头装卸工,这和Docker的中文翻译搬运工人如出一辙。
PS: 我在写这篇文章的时候,由于表格处理不够美观,所以就直接截图了。如果各位dalao走过路过,能教教我怎么把表格弄得好看一点的话,麻烦给我留个言,小生先提前谢谢您的帮助啦!
docker入门2--生命周期的更多相关文章
- Spring入门之生命周期
好几日没有读东西了,今天本来要读mybatis原理部分,但是看到作者讲,只是学会用不用学那么深,遂直接开干spring,工作中一直用springboot,框架都是领导搭好的,每天的任务就是增删改查,挺 ...
- android入门 — Activity生命周期
Activity总共有7个回调方法,代表着不同的生命周期的环节. 1.onCreate() 在活动第一次被创建的时候调用.在这个方法中需要完成活动的初始化操作,比如说加载布局.绑定事件等. 2.onS ...
- maven入门-- part3 生命周期
简介: Maven有三套相互独立的生命周期,请注意这里说的是“三套”,而且“相互独立”,这三套生命周期分别是: Clean Lifecycle 在进行真正的构建之前进行一些清理工作. Default ...
- Docker容器的生命周期管理
https://blog.csdn.net/u010278923/article/details/78751306
- 05-Vue入门系列之Vue实例详解与生命周期
Vue的实例是Vue框架的入口,其实也就是前端的ViewModel,它包含了页面中的业务逻辑处理.数据模型等,当然它也有自己的一系列的生命周期的事件钩子,辅助我们进行对整个Vue实例生成.编译.挂着. ...
- Vue入门系列(五)Vue实例详解与生命周期
Vue官网: https://cn.vuejs.org/v2/guide/forms.html#基础用法 [入门系列] (一) http://www.cnblogs.com/gdsblog/p/78 ...
- Docker安装,基本概念,执行流程,生命周期简介
Docker基本概念 在使用Docker前,首先要先知道Docker中这几个常用的概念: 镜像:镜像是文件,只读的,提供了运行完整软硬件应用程序的集装箱. 容器:是镜像的实例,由Docker负责创建, ...
- Docker入门详解(转载)
来源 http://dockone.io http://dockone.io/article/6051 Docker是世界领先的软件容器平台,所以想要搞懂Docker的概念我们必须先从容器开始说起. ...
- Vue实例详解与生命周期
http://www.jianshu.com/p/b5858f1e6e76 Vue的实例是Vue框架的入口,其实也就是前端的ViewModel,它包含了页面中的业务逻辑处理.数据模型等,当然它也有自己 ...
随机推荐
- npm install、npm install --save与npm install --save-dev (转)
仅供学习参考,侵权删 以npm安装msbuild为例: npm install msbuild: 会把msbuild包安装到node_modules目录中 不会修改package.json 之后运行n ...
- string::at
char& at (size_t pos); const char& at (size_t pos) const; #include <string>#include &l ...
- Activiti服务类- RuntimeService服务类
一共89个接口1.启动流程实例(20个方法)//使用给定的键在流程定义的最新版本中启动一个新的流程实例.ProcessInstance startProcessInstanceByKey(String ...
- set/unset
自定义一个变量 name=value 查看现有变量 删除变量或函数 unset name
- AT3913 XOR Tree(巧妙转换+状压dp)
Step1:首先定义一个点的权值为与其相连边的异或和.那么修改一条路径,权值改变的只有两个端点.边权都为0和点权都为0实质相同. Step2:那么现在和树的结构就没有什么关系了.每次选两个点,然后同时 ...
- 在Android中使用OpenGL ES进行开发第(二)节:定义图形
一.前期基础知识储备笔者计划写三篇文章来详细分析OpenGL ES基础的同时也是入门关键的三个点: ①OpenGL ES是什么?与OpenGL的关系是什么?——概念部分 ②使用OpenGLES绘制2D ...
- scss的使用
看到一篇很好的文章,感觉不用我自己总结了, 上个链接:https://blog.csdn.net/zhouzuoluo/article/details/81010331
- 部署web前端的react项目到linux服务器
部署web前端的react项目到linux服务器 项目的目录结构 ``` ├─dlls #dlls编译后的问题 ├─doc #帮助文件入口 │ ├─src │ ├─apps #各个功能模块放在这里 │ ...
- sick 激光
sick10:TiM561-2050101https://www.sick.com/cn/zh/detection-and-ranging-solutions/2d-lidar-/tim5xx/tim ...
- JavaWeb_(Spring框架)认识Spring中的aop
1.aop思想介绍(面向切面编程):将纵向重复代码,横向抽取解决,简称:横切 2.Spring中的aop:无需我们自己写动态代理的代码,spring可以将容器中管理对象生成动态代理对象,前提是我们对他 ...