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实践--事件
通过HTML网页所呈现的界面是异步的和事件驱动的.步骤: 建立用户界面 等待又去的事情发生 做出相应的反应 重复 浏览器所实现的事件模型 DOM第0级事件模型 事件处理程序是通过吧函数实例的引用指派到 ...
- keepalived+lvs+nginx高可用
环境说明: IP地址 部署应用 192.168.10.100 VIP0 192.168.10.101 VIP1 192.168.10.17 keepalived+lvs 192.168.10.16 k ...
- SIGAI机器学习第六集 决策树
讲授决策树的基本概念,分类与回归树的原理,决策树的表示能力,决策树的训练算法,寻找最佳分裂的原理,叶子节点值的标记,属性缺失与替 代分裂,决策树的剪枝算法,决策树应用. 非常直观和易于理解的机器学习算 ...
- Shell 03 for while case 函数 中断及退出
一.for循环 1.脚本1,通过循环批量显示5个hello world ( in 1 2 3 4 5 ) 2.脚本2,通过循环批量显示10个hello world ( in {1..10} ...
- 安裝開源BBS軟件YAF時碰到的問題
1.下載 http://yetanotherforum.net/download.aspx 安裝說明 http://www.drreddys.com/quest/readme.htm 其實只要打開根目 ...
- 外网可以反问lxr
, 'baseurl_aliases' => 174 [ 'http://172.168.2.4/lxr' 175 , 'http://mydomain/lxr' 176 ...
- 集合家族——List集合汇总
一.概述 List继承了Collection,是有序的列表. 可重复数据 实现类有ArrayList.LinkedList.Vector.Stack等 ArrayList是基于数组实现的,是一个数组队 ...
- c++ 数据类型长度
#include <iostream> using namespace std; int main() { cout << "char: " << ...
- Spring事务管理的一些注意点
在<Spring Boot事务管理(下)>中,已经介绍了如果在 protected.private 或者默认可见性的方法上使用@Transactional,事务将是摆设,也不会抛出任何异常 ...
- Leetcode题目300.最长上升子序列(动态规划-中等)
题目描述: 给定一个无序的整数数组,找到其中最长上升子序列的长度. 示例: 输入: [10,9,2,5,3,7,101,18] 输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度 ...