容器(container)和镜像(image)

作者&投稿:彤注 (若有异议请与网页底部的电邮联系)
~

镜像(Image)就是一堆只读层(read-only layer)的统一视角,也许这个定义有些难以理解,下面的这张图能够帮助读者理解镜像的定义。

从左边我们看到了多个只读层,它们重叠在一起。除了最下面一层,其它层都会有一个指针指向下一层。这些层是Docker内部的实现细节,并且能够 在主机(译者注:运行Docker的机器)的文件系统上访问到。统一文件系统(union file system)技术能够将不同的层整合成一个文件系统,为这些层提供了一个统一的视角,这样就隐藏了多层的存在,在用户的角度看来,只存在一个文件系统。 我们可以在图片的右边看到这个视角的形式。

你可以在你的主机文件系统上找到有关这些层的文件。需要注意的是,在一个运行中的容器内部,这些层是不可见的。

/var/lib/docker/
├── aufs
├── containers
├── graph
├── init
├── linkgraph.db
├── repositories-aufs
├── tmp
├── trust
└── volumes
7 directories, 2 files

容器(container)的定义和镜像(image)几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。

容器的定义并没有提及容器是否在运行
要点:容器 = 镜像 + 可读层。并且容器的定义并没有提及是否要运行容器

一个运行态容器(running container)被定义为一个可读写的统一文件系统加上隔离的进程空间和包含其中的进程。下面这张图片展示了一个运行中的容器。

正是文件系统隔离技术使得Docker成为了一个前途无量的技术。一个容器中的进程可能会对文件进行修改、删除、创建,这些改变都将作用于可读写层(read-write layer)。下面这张图展示了这个行为。

即便是这个ubuntu容器不再运行,依旧能够在主机的文件系统上找到这个新文件。

/var/lib/docker/aufs/diff/860a7b...889/happiness.txt

为了将零星的数据整合起来,我们提出了镜像层(image layer)这个概念。下面的这张图描述了一个镜像层,通过图片我们能够发现一个层并不仅仅包含文件系统的改变,它还能包含了其他重要信息。

元数据(metadata)就是关于这个层的额外信息,它不仅能够让Docker获取运行和构建时的信息,还包括父层的层次信息。需要注意,只读层和读写层都包含元数据。

除此之外,每一层都包括了一个指向父层的指针。如果一个层没有这个指针,说明它处于最底层。

Metadata Location:
在我自己的主机上,镜像层(image layer)的元数据被保存在名为”json”的文件中,比如说:
/var/lib/docker/graph/e809f156dc985.../json

e809f156dc985...就是这层的id

一个容器的元数据好像是被分成了很多文件,但或多或少能够在/var/lib/docker/containers/<id>目录下找到,<id>就是一个可读层的id。这个目录下的文件大多是运行时的数据,比如说网络,日志等等。

参考 docker容器和镜像区别




【SqlServer】如何把本地SqlServer服务器部署到远程服务器上
选择附加。指定数据库的位置,指定完成后,在详细信息中会出现数据库的详细信息.如果这时候出现有数据的日志信息,那么选中将其删除。然后单击确定,刷新数据库后,数据库就部署到远程服务器中了。【SqlServer】如何把本地SqlServer服务器部署到远程服务器上标签:它的附加完成movecontain选中读者.comserve ...

css中的背景图怎么改变大小
在css中控制插入背景图片的大小用background-size background-size使用语法有下面四种情况 background-size: length|percentage|cover|contain length用法:background-size:100px; \/\/背景图片显示的宽和高为100像素 background-size:100px 160px;\/\/背景图片显示的宽为100像素,高为600像素 percentage...

涵涵的意思
3. 包含,包容 [contain]。如:涵容(包容;包涵);涵沈(含藏);涵映(包含映照) 4. 包涵,宽容 [forgive]。如:涵忍(包涵容忍);涵谅(包涵原谅);涵容(包涵;宽容) 5. 沉浸 [immerse]。如:涵泳(在水中潜行。即游泳,沉浸,薰陶);涵浸(浸渍,滋润) 〈名〉 1. 涵洞 [culvert]。如:桥涵 词语解释 【...

nvidia控制面板图形处理器选择方法
在运行对话框中输入 gpeditmsc 命令,打开本地组策略编辑器窗口2在;1在控制面板中找到管理工具,选择管理工具,打开管理工具 2打开管理工具找到服务,打开服务在服务的选项中找到NVIDIA Display Driver Service和NVIDIA LocalSystem Containor两个选项,查看这两个服务是否启用 3再次启动。

NVIDIA控制面板管理3D设置里没有首选图形处理器。。(有图)
1、在控制面板中找到管理工具,选择(管理工具),打开管理工具 2、打开管理工具找到服务,打开服务在服务的选项中找到NVIDIA Display Driver Service和NVIDIA LocalSystem Containor两个选项,查看这两个服务是否启用 3、再次启动NVIDIA控制面板,就能成功打开了 ...

英语翻译 ,求不要用翻译器
纯自身翻译,请采纳。如果你没有电或者电池该怎样使用收音机或者手机呢?这些问题困扰着英国发明家Trevor Baylis。因此,在1996年,他发明了一种装有发条的收音机,这种收音机不需要电或者电池。你用手来运转它。它大概可以播放大概一个小时。之后你再次运转它。现在它在南非被制造出来。之后再1999年,...

如何高效的实现一个计数器map
1: final Map<String, Integer> freq = new HashMap<String, Integer>();2: int count = freq.containsKey(word) ? freq.get(word) : 0;3: freq.put(word, count + 1);逻辑简单,判断是否存在,是则get取值,否则为0,再put进去一个加1后的值。总共要contain判断,get,put做三次方法...

单片机英文翻译3
对这些应用器件,程序被固化,并被写入微控制器的ROM或EPROM中。The memory such as ROM\/EPROM of microcontroller which stores program,is called the program memory.这些微控制器中的用来存储程序的存储器像ROM\/EPROM被称作程序存储器。The 8041,8048,8049,8050,etc contain ROM whereas the 8741,...

nvidia控制面板没有首选图形处理器选项解决教程
1在控制面板中找到管理工具,选择管理工具,打开管理工具 2打开管理工具找到服务,打开服务在服务的选项中找到NVIDIA Display Driver Service和NVIDIA LocalSystem Containor两个选项,查看这两个服务是否启用 3再次启动。1在电脑桌面空白处点击鼠标右键,选择“NVIDIA控制面板”2打开控制面板后,点击左侧的“通过...

在NVIDIA控制面板中无法选择 高性能NVIDIA处理器,
您可以卸载当前独立显卡驱动,重启机器后,重新安装下独立显卡驱动,并按照下面的方法进行切换试试看。操作如下:1、在控制面板中找到管理工具,选择(管理工具),打开管理工具 2、打开管理工具找到服务,打开服务 3、在服务的选项中找到NVIDIA Display Driver Service和NVIDIA LocalSystem Containor两个选项,...

乌当区19623267454: Docker的镜像和容器的区别 -
钮溥环欣: 一、Docker镜像要理解Docker镜像和Docker容器之间的区别,确实不容易.假设Linux内核是第0层,那么无论怎么运行Docker,它都是运行于内核层之上的.这个Docker镜像,是一个只读的镜像,位于第1层,它不能被修改或不能保存状态...

乌当区19623267454: Docker中镜像和容器的区别 -
钮溥环欣: docker centos 和 ubuntu 镜像的区别Docker是基于镜像的.镜像类似于已经包含了文件、配置和安装好的程序的虚拟机镜像.同样的,你可以像启动虚拟机一样启动多个镜像实例.运行中的镜像称为容器.你可以修改容器(比如删除一个文件),但这些修改不会影响到镜像.不过,你使用docke...

乌当区19623267454: Docker的镜像和容器有什么区别 -
钮溥环欣: 容器是由镜像产生,镜像是用来生成容器,镜像可以移植到任何docker环境下生成容器.更多的Docker教程,可以百度搜索 知识林

乌当区19623267454: 什么是docker容器技术? -
钮溥环欣: docker容器技术指Docker是一个由GO语言写的程序运行的“容器”(Linux containers, LXCs) Docker则实现了一种应用程序级别的隔离,它改变我们基本的开发、操作单元,由直接操作虚拟主机(VM),转换到操作程序运行的“容器”上来....

乌当区19623267454: docker 容器空间不够用了怎么办 -
钮溥环欣: 通过命令可以观察到/var/lib/Docker目录很大,我的主机只有20G,这个目录占了18G;原因是devicemapper的空间设的太大,通过docker info打印的Data Space Total参数可以看到,默认是107.4G. 思路如下: 备份当前容器、镜像; 删除/var/...

乌当区19623267454: container的用法 -
钮溥环欣: container-名词 容器 container, vessel, receptacle, cistern 集装箱 container 箱 box, container, crate, chest, package, trunk 箱子 box, case, trunk, bin, container, casing 笼 cage, basket, hutch, coop, container, envelope 盂 container, cup, calyx 盦 container

乌当区19623267454: java中容器是什么意思? -
钮溥环欣: 容器本身是一个组件 与其他组件的区别是——他可以存放其他的组件 也就是说其他的组件可以放在他的上面.就这么简单

乌当区19623267454: java容器使用 -
钮溥环欣: 容器(Container) Spring 提供容器功能,容器可以管理对象的生命周期、对象与对象之间的依赖关系,您可以使用一个配置文件(通常是XML),在上面定义好对象的名称、如何产生(Prototype 方式或Singleton 方式)、哪个对象产生之后必须设定成为某个对象的属性等,在启动容器之后,所有的对象都可以直接取用,不用编写任何一行程序代码来产生对象,或是建立对象与对象之间的依赖关系. 换个更直白点的说明方式:容器是一个Java 所编写的程序,原先必须自行编写程序以管理对象关系,现在容器都会自动帮您作好. 常用容器:WebSphere,WebLogic,Resin,Tomcat

乌当区19623267454: java中所说的容器是什么东西?什么意思? -
钮溥环欣: 你的问题太笼统了,不是你是说javase,还是Java Web.容器更多是在Java Web中使用的词,但是代表可以提供Java运行的Web服务器.也就是说容器就是Java的运行环境.

乌当区19623267454: 如何用docker搭建一台虚拟机 -
钮溥环欣: docker如果安装成功,会有一块虚拟网卡,ip地址默认是172.17.42.1用docker search centos6命令搜索githup中的容器使用docker pull weepee/centos6下载容器到本地使用docker images查看本地所有的容器使用run命令启动容器 /usr/bin/...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网