说明:
        一直想学Docker,容器、镜像、仓库什么的好难理解就没怎么看了,最近下定决心好好看看,google、Baidu发现这篇好文章,看完差不多有个大概的理解。里面的内容基本上来以下博文,是国外一小伙写的,很牛~,第二个链接是国内翻译的一个译文,第三个链接里有几幅图很经典,是参考这里的。这么好的文章真的得分享
 
      http://merrigrove.blogspot.sg/2015/10/visualizing-docker-containers-and-images.html  原文
      http://dockone.io/article/783  译文
      https://www.cnblogs.com/SzeCheng/p/6822905.html
总体图:

 
 
一、镜像
 
镜像(Image)就是一堆只读层(read-only layer)的统一视角。一个只读的模板。如一个镜像可以包含一个完整的操作系统环境,里面仅安装了Apache或用户需要的其他应用程序。镜像可以用来创建Docker容器。Docker提供了一个简单的机制来创建镜像或更新现有的镜像。用户也可以直接从其他人那里下载一个已经做好的镜像直接来使用。
 
 
 
 
 
二、容器(Container)
 
Docker利用容器来运行应用、容器是从镜像创建的运行实例。可以被启动、开始、停止、删除。每个容器都是相互隔离的,保证安全的平台。容器的定义和镜像几乎一样,也是一堆层的视角,唯一的区别在与容器的最上面那一层是可读可写的。
 
 
 
 
 
三、运行容器(Running Container Definition)
 
一个运行态容器(running container)被定义为一个可读写的统一文件系统加上隔离的进程空间和包含其中的进程。
 
 
 
正是文件系统隔离技术使得Docker成为了一个前途无量的技术。一个容器中的进程可能会对文件进程修改,删除,创建,这些改变都将作用于可读写层(read-write layer)
 
 
 
四、镜像层(image layer)
 
一个层并不仅仅包含文件系统的改变,还包含了其他重要信息。  
 
 
 
       
元数据(metadata)就是关于这个层的额外信息,它不仅能够让Docker获取运行和构建时的信息,还包括父层的层次信息,只读层和读写层都包含元数据。

 
 
每一层都包含了一个指向父层的指针,如果一个层没有这个指针,说明他处于最底层。
 
 
 
五、全局理解
 
1)docker create <image-id>
 
 
 
docker create 命令为指定的镜像(image)添加了一个可读写层,构成了一个新的容器,这个容器并没有运行
 
 
 
2)docker start <container-id>
 

 
Docker start 命令为容器文件系统创建了一个进程隔离空间,每个容器只能够有一个进程隔离的空间
 
3)docker run <image-id>
 
 
docker start 与docker run的区别
 
docker run 命令先是利用镜像创建了一个容器,这个命令隐藏了docker create与docker start细节
 
4)docker ps
 
docker ps命令会列出所有运行中的容器。这隐藏了非运行态容器的存在。
 
5)docker ps -a
 
 
docker ps -a 会列出所有的容器,不管是运行的,还是停止的
 
6)docker images
 
 
 
docker images 会列出所有顶层(top-level)镜像。没有办法区分一个镜像和一个只读层,所以提出了top-level镜像。只有创建容器时使用的镜像或者是直接pull下来的镜像能被称为顶层镜像(top-level),并且每一个顶层镜像下面都影藏了多个镜像层
 
 
7)docker images -a
 
 
docker iamges -a命令列出了所有的镜像,列出了所有的可读层,查看某一个image-id下的所有层,可使用docker history image-id来查看
 
 
8)docker stop <container-id>
 
 
 docker stop命令会向运行中的容器发送一个SIGTERM信号,然后停止所有进程
 
9)docker skill <container-id>
 
docker kill 命令向所有运行在容器中的进程发送一个不友好的SIGKILL信号
 
10)docker pause <container-id>
 
 
docker stop和docker kill 命令会发送UNIX的信号给运行中的进程。docker pause用cgroups的特性将运行中的进程空间暂停
 
11)docker rm <container-id>
 
 
docker rm命令会移除构成容器的可读写层,这个命令只能对非运行态容器执行
 
11)docker rmi <image-id>
 
 
docker rmi 命令会移除构成镜像的一个只读层。只能够使用docker rmi来移除最顶层(top level layer)也就是镜像,也可以使用-f参数来强制删除中间的只读层
12)docker commit <container-id>
 
 
docker commit命令将容器的可读写层转换成一个只读层,这样把一个容器转换成了不可变的镜像
 
 
 
13)docker build
 
 
 
 
 
build命令根据Dockerfile文件中的FROM指令获取到镜像,然后重复的run、修改、commit。在循环中每一步都会生成一个新的层,因此许多新的层会被创建
 
14)docker exec <running-container-id>
 
docker exec 命令会在运行中的容器执行一个新进程
 
15)docker inspect <container-id> or <image-id>
 
docker inspect 命令会提取出容器或者镜像最顶层的元数据
 
16)docker save <image-id>
 
 

docker save创建一个镜像的压缩文件,这个文件能够在另一个主机的Docker上使用。和export命令不同。save命令为每一个层都保存了它们的元数据,只对镜像生效

 
17)docker export <container-id>
 
 
docker export创建一个tar文件,并且移除了元数据和不必要的层,将多个层整合成一个层,只保存当前统一视角看到的内容。export后的容器再import到Docker中,通过docker images -tree命令只能看到一个镜像;而save后的镜像不同,他能看到这个镜像的历史镜像
18)docker history <image-id>
 
 
docker history命令递归的输出指定镜像的历史镜像

Docker概念(二)的更多相关文章

  1. docker 概念初识

    1 docker 优势,一次创建或配置可以在任意时间.任意环境让应用正常的运行. 快速交付和部署,开发人员可以使用镜像快速构建一套标准的开发环境:开发完后测试和运维人员可以直接使用相同的环境来部署代码 ...

  2. Docker 概念及基本用法

    Docker 概念及基本用法 一. 本节内容简介 本实验中我们初步接触Docker的概念和基本用法.需要依次完成下面几项任务: 理解Docker是什么 学习如何在Linux上安装Docker 学习如何 ...

  3. JavaScript基本概念(二)

    JavaScript 基本概念(二) 操作符和语句 目录 操作符 一元操作符 位操作符 布尔操作符 乘性操作符 其他操作符 语句部分 说起操作符,回忆下上一篇文章末尾说的话. 操作符 一元操作符 ++ ...

  4. C#学习基础概念二十五问

    C#学习基础概念二十五问 1.静态变量和非静态变量的区别?2.const 和 static readonly 区别?3.extern 是什么意思?4.abstract 是什么意思?5.internal ...

  5. AspNetCore容器化(Docker)部署(二) —— 多容器通信

    一.前言 着上一篇 AspNetCore容器化(Docker)部署(一) —— 入门,在单个容器helloworld的基础上引入nginx反向代理服务器组成多容器应用. 二.配置反向代理转接 配置转接 ...

  6. Docker 系列二(操作镜像).

    一.镜像管理 1.拉取镜像 docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签] -- Docker 镜像仓库地址 :一般是 域名或者IP[:端口号 ...

  7. docker概念

    一.docket概述 什么是docker? 为什么docker会出现 一款产品从开发到上线,从操作系统,到运行环境,再到应用配置.作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不 ...

  8. docker 概念 | 安装 | 基本使用

    Docker 是世界领先的软件容器平台,所以想要搞懂Docker的概念我们必须先从容器开始说起. 一 先从认识容器开始 先来看看容器较为官方的解释 一句话概括容器:容器就是将软件打包成标准化单元,以用 ...

  9. Docker(二):理解容器编排工具Kubernetes内部工作原理

    一.Kubernetes是什么 要说到Docker就不得不说说Kubernetes.当Docker容器在微服务的环境下数量一多,那么统一的,自动化的管理自然少不了.而Kubernetes就是一个这样的 ...

随机推荐

  1. wrk 安装使用

    ==================== 安装 ====================https://github.com/wg/wrk/wiki sudo yum -y groupinstall ...

  2. 文件编码检测.ZC一些资料(包含java的)

    1.IMultiLanguage3 或者 IMultiLanguage2 1.1.怎么判断XML 的编码格式(UTF-8或GB2312等)-CSDN论坛.html(https://bbs.csdn.n ...

  3. js之Object属性封装

    在object.create出现之前,我们实现继承一般使用: function base(){} function children(){} //实现children继承base (function( ...

  4. HTML:foreach

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...

  5. [luogu P2205] [USACO13JAN]画栅栏Painting the Fence

    [luogu P2205] [USACO13JAN]画栅栏Painting the Fence 题目描述 Farmer John has devised a brilliant method to p ...

  6. Win10安装CAD2006

    以管理员身份运行 提示如下问题: 查看该隐藏文件如下: 开始以为是未安装MSI Runtime 3.0和.NET Framework Runtime 1.1的原因,下载并安装后还是提示如上问题. 仔细 ...

  7. Python—集合的操作、文件的操作

    1.集合的操作 2.文件的操作 1.集合的操作 定义: 1.不同元素组成,自动去重 2.无序 3.集合中的元素必须是不可变类型 1.集合的定义: >>> s1 = set('abcd ...

  8. navicat 定时备份

    1.点击备份-->新建备份 2.对象选择:可以选择要备份的表也可以不选,默认全部选择:之后点击保存:输入文件名即可:注意弹框不会消失,这是已经生成了备份任务 3.点击计划-->新建批量计划 ...

  9. nginx——控制 Nginx 并发连接数

    1. 限制单个 IP 的并发连接数 .... http { include mime.types; default_type application/octet-stream; sendfile on ...

  10. freckles

    题目描述: In an episode of the Dick Van Dyke show, little Richie connects the freckles on his Dad's back ...