当前位置: 首页 > 编程笔记 >

Docker 镜像和容器的区别详解

越季萌
2023-03-14
本文向大家介绍Docker 镜像和容器的区别详解,包括了Docker 镜像和容器的区别详解的使用技巧和注意事项,需要的朋友参考一下

 最近学习Docker,被Docker 的镜像和容器搞的晕头转向,索性上网查找相关资料并整理下彻底的理解这块内容,有需要的小伙伴可以看下,少走点弯路。

Docker的镜像和容器的区别        

一、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时,我们从一个基图像开始。我们启动它,创建更改,这些更改保存在图层中,形成另一个图像。 所以最终我有了一个用于我的PostgreSQL实例的映像和一个用于我的web应用程序的映像,对这些映像的更改将持续保持。 什么是容器?

  • 本文向大家介绍详解Docker创建支持ssh服务的容器和镜像,包括了详解Docker创建支持ssh服务的容器和镜像的使用技巧和注意事项,需要的朋友参考一下 1. 这里使用的centos作为容器,所以首先下载centos的images 2. 下载后运行一个centos的容器,这里使用centos6作为我测试的容器 3. 安装openssh-server服务软件包 4. 编辑sshd的配置文件/etc

  • 有人能帮我理解docker run之间的区别吗? 当我做码头运行-帮助 在新容器中运行命令。 它们在内部运行容器的方式有什么不同吗?还是两者都做同样的工作? 根据https://forums.docker.com/t/docker-run-and-docker-container-run/30526.docker运行仍然是旧的,很快就会被弃用,但还没有确认。

  • 本文向大家介绍详解Docker 容器基础系统镜像打包,包括了详解Docker 容器基础系统镜像打包的使用技巧和注意事项,需要的朋友参考一下 因为容器本身是共享宿主操作系统内核,所以容器基础系统镜像包本身就是一个标准的 Linux rootfs + 用户自定义的工具。根据这个思路,我们就可以构建一个自己的容器基础系统镜像。 构建标准的 Linux rootfs 的方式有很多种方法,Redhat、De

  • 本文向大家介绍Docker 镜像、容器、仓库的概念及应用详解,包括了Docker 镜像、容器、仓库的概念及应用详解的使用技巧和注意事项,需要的朋友参考一下 Docker 镜像、容器、仓库的概念 Docker镜像 Docker镜像(Image)类似于虚拟机的镜像,可以将他理解为一个面向Docker引擎的只读模板,包含了文件系统。 例如:一个镜像可以完全包含了Ubuntu操作系统环境,可以把它称作一个

  • 问题内容: 使用Docker时,我们从基础映像开始。我们启动它,创建更改,并将这些更改保存在形成另一个映像的层中。 因此,最终我为自己的PostgreSQL实例提供了一个映像,为我的Web应用程序提供了一个映像,对它们的更改将继续保留。 什么是容器? 问题答案: 图像的实例称为容器。您有一张图像,该图像是您描述的一组图层。如果启动此映像,则该映像具有正在运行的容器。您可以有多个运行中的同一图像容器