Docker的镜像和容器的区别

作者:chszs,版权所有,未经同意,不得转载。博主主页:http://blog.csdn.net/chszs

一、Docker镜像

要理解Docker镜像和Docker容器之间的区别,确实不容易。

假设Linux内核是第0层,那么无论怎么运行Docker,它都是运行于内核层之上的。这个Docker镜像,是一个只读的镜像,位于第1层,它不能被修改或不能保存状态。

一个Docker镜像可以构建于另一个Docker镜像之上,这种层叠关系可以是多层的。第1层的镜像层我们称之为基础镜像(Base Image),其他层的镜像(除了最顶层)我们称之为父层镜像(Parent Image)。这些镜像继承了他们的父层镜像的所有属性和设置,并在Dockerfile中添加了自己的配置。

Docker镜像通过镜像ID进行识别。镜像ID是一个64字符的十六进制的字符串。但是当我们运行镜像时,通常我们不会使用镜像ID来引用镜像,而是使用镜像名来引用。要列出本地所有有效的镜像,可以使用命令

# docker images

镜像可以发布为不同的版本,这种机制我们称之为标签(Tag)。

如上图所示,neo4j镜像有两个版本:lastest版本和2.1.5版本。

可以使用pull命令加上指定的标签:

# docker pull ubuntu:14.04
# docker pull ubuntu:12.04

二、Docker容器

Docker容器可以使用命令创建:

# docker run imagename

它会在所有的镜像层之上增加一个可写层。这个可写层有运行在CPU上的进程,而且有两个不同的状态:运行态(Running)和退出态(Exited)。这就是Docker容器。当我们使用docker run启动容器,Docker容器就进入运行态,当我们停止Docker容器时,它就进入退出态。

当我们有一个正在运行的Docker容器时,从运行态到停止态,我们对它所做的一切变更都会永久地写到容器的文件系统中。要切记,对容器的变更是写入到容器的文件系统的,而不是写入到Docker镜像中的。

我们可以用同一个镜像启动多个Docker容器,这些容器启动后都是活动的,彼此还是相互隔离的。我们对其中一个容器所做的变更只会局限于那个容器本身。

如果对容器的底层镜像进行修改,那么当前正在运行的容器是不受影响的,不会发生自动更新现象。

如果想更新容器到其镜像的新版本,那么必须当心,确保我们是以正确的方式构建了数据结构,否则我们可能会导致损失容器中所有数据的后果。

64字符的十六进制的字符串来定义容器ID,它是容器的唯一标识符。容器之间的交互是依靠容器ID识别的,由于容器ID的字符太长,我们通常只需键入容器ID的前4个字符即可。当然,我们还可以使用容器名,但显然用4字符的容器ID更为简便。

Docker的镜像和容器的区别相关推荐

  1. 在Centos7 更改Docker默认镜像和容器的位置

    在Centos7 更改Docker默认镜像和容器的位置 一.Why? 通常,当你开始使用docker时,我们并不太关心Docker 用于存储镜像和容器的默认目录.当使用Docker进行更多实验时,Do ...

  2. Docker架构镜像及容器管理

    Docker概述 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制, ...

  3. Docker入门02 - Docker的镜像和容器

    文章目录 1. Docker的镜像 A. 如何获取镜像? B. 列出镜像 C. 删除本地镜像 用 ID.镜像名.摘要删除镜像 Untagged 和 Deleted 用 docker image ls ...

  4. Docker之镜像、容器基础操作

    目录 一.docker镜像操作 1.搜索镜像 2.获取镜像(下载镜像) 3.查看镜像 3.1 查看下载到本地的所有镜像 3.2 查看下载的镜像文件信息 3.3 查看具体镜像详细信息 4.为本地的镜像添 ...

  5. Docker之镜像、容器、仓库概念

    Docker镜像 操作系统分为内核和用户空间.对于 Linux 而言,内核启动后,会挂载 root 文件系统为其提供用户空间支持.而 Docker 镜像(Image),就相当于是一个 root 文件系 ...

  6. 一句命令删除docker所有镜像或容器

    使用docker有时想删除所有镜像,或删除所有容器,下面给出实现方法:  删除所有镜像: sudo docker rmi $(sudo docker images | sudo grep -o '[0 ...

  7. docker删除镜像、容器命令

    #所有镜像和容器都删除的命令 docker system prune -a #查看镜像 docker images #删除单个镜像 docker rmi -f <镜像id> #删除所有镜像 ...

  8. 【docker】关于docker 中 镜像、容器的关系理解

    例如,使用docker 拉取下来一个要用的镜像es docker pull elasticsearch:5.6.9 此时es的镜像存在与服务器上 docker images 对于你运行镜像为一个容器的 ...

  9. docker删除镜像及容器

    问题 清理服务器相关无用docker镜像及容器. 删除镜像image 要删除 Docker 中的镜像,可以使用 docker rmi 命令.请注意,删除镜像前请确保不再需要它,并且已经停止了使用该镜像 ...

最新文章

  1. vue和layui哪个更好用_幕布和Mind+思维导图哪个更好用?
  2. boost::mp11::mp_all_of相关用法的测试程序
  3. 是用Entity.Save(),还是用DAL.Save(Entity e)
  4. C#高性能TCP服务的多种实现方式
  5. ASP.NET技巧:字符自动截取问题
  6. EJB3.0学习笔记---MDB--第一个MDBBean程序:
  7. [2018.07.21 T2] 离家出走
  8. 电厂数字化进阶之路(一):光明的使者
  9. 2022 基于SpringBoot的API文档管理系统 接口文档管理系统
  10. linux移除硬盘命令,在Linux中在线添加及移除SCSI硬盘方法
  11. Oracle Golden Gate 系列二 -- GG 的系统需求
  12. 光纤接头截面工艺分类
  13. 网站访问流程及原理分析
  14. JAVA将日期类型(xx年xx月xx日)转化 成字符串变量
  15. linux服务器端 postfix+php邮件发送+发件人代发修改配置
  16. Vulkan学习(十五): 总结
  17. Python爬虫实战:爬取维基百科
  18. 洛谷 P3258 松鼠的新家 题解
  19. 数据库访问函数FIND_IN_SET介绍
  20. 专题05-python操作微信(wxpy)

热门文章

  1. 打鸭子java代码_【Java JDK和VirtuaNES(FC模拟器)哪个好用】Java JDK和VirtuaNES(FC模拟器)对比-ZOL下载...
  2. laravel安装-中文语言包
  3. 第一章_Android入门
  4. 智能客服 | 浅谈人工智能聊天机器人ChatGPT
  5. 向量点乘叉乘等理解和应用
  6. 学IT最重要的东西是什么?
  7. 我读故我在:《文凭社会》读后感
  8. 涨知识!住建局如何利用“千里眼”实现对建筑工地的远程监管?
  9. 零、爬虫基础(通用爬虫)
  10. 故障:部署 Exchange SU 后不能登录到 OWA 或 ECP