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,它包含了页面中的业务逻辑处理.数据模型等,当然它也有自己 ...
随机推荐
- JQuery实践--Why JQuery
给页面增加动态功能的工作流模式:选择一个元素或一组元素,然后以某种方式对其进行操作. 利用原始的JavaScript完成这些任务中的任何一个,都会需要数十行代码,JQuery让这些常见的任务变得简单 ...
- animation-timing-function
animation-timing-function 语法: animation-timing-function:<single-animation-timing-function>[,&l ...
- How to change the default browser to debug with in Visual Studio 2008?
http://stackoverflow.com/questions/297298/how-to-change-the-default-browser-to-debug-with-in-visual- ...
- GO111MODULE的设置(及GOPROXY)
环境:win7 go1.13.1 早听说GO111MODULE大名,今天才测试成功,步骤如下: 因为我的Go version >= 1.13,直接用go env -w 设置(注意大小写) go ...
- ue/um-editor实现word图片复制
图片的复制无非有两种方法,一种是图片直接上传到服务器,另外一种转换成二进制流的base64码 目前限chrome浏览器使用,但是项目要求需要支持所有的浏览器,包括Windows和macOS系统.没有办 ...
- Noip2011 提高组 Day1 T1 铺地毯 + Day2 T1 计算系数
Day1 T1 题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 n 张地毯,编号从 1 到n .现在将这些地毯按照编号从小 ...
- jenkins之自动化部署github上maven项目
部署流程:将代码从github上拉取下来,使用maven打包,将打包后的jar通过ssh发送到服务器上,然后构建docker镜像,运行容器. 1.安装插件 如果是第一次使用jenkins,需要检查并确 ...
- ZR#996
ZR#996 解法: 若删除长度为 $ x $ 的子串后序列中没有相同元素,那么一定有至少一个长度为 $ x+1 $ 的子串,删除它后序列中也没有相同元素. CODE: #include <io ...
- Spring框架AOP
aop技术是面向切面编程思想,作为OOP的延续思想添加到企业开发中,用于弥补OOP开发过程中的缺陷而提出的编程思想.AOP底层也是面向对象:只不过面向的不是普通的Object对象,而是特殊的AOP对象 ...
- 应用fluent二维单向流泥沙冲刷作用下河床变形代码【转载】
本代码转载自:http://www.codeforge.cn/read/260028/keti_2d_b.c__html #include "udf.h" #define Rho ...