Docker | Docker技术基础梳理(四) - 深入理解镜像与容器

简介: Docker | Docker技术基础梳理(四) - 深入理解镜像与容器

容器与镜像的关系

在实际操作中,我们配置好需要的容器之后可以将它转化为镜像提交到仓库,以便之后使用。

先看一下容器与镜像的转换关系图:

容器提交(docker commit)

根据容器生成一个新的镜像

命令格式:docker commit [参数] 容器[版本]

常用参数:

-a 添加作者
-c 为创建的镜像加入Dockerfile命令
-m 类似git commit -m
-p 提交时暂停容器
容器导出(docker export)

将当前容器导出为TAR文件

命令格式:docker export [参数] 容器

常用参数:-o 指定写入的文件

容器导入(docker import)

将之前导出的容器文件导入并创建为一个镜像

命令格式:docker import [参数] 文件|链接|[版本信息]

常用参数:

-m 导入时添加提交信息
-c 为创建的镜像加入Dockerfile命令
docker import 与 docker commit 的区别

当你使用docker import 时,导入的镜像是一个全新镜像,是无法使用docker history查看到镜像的历史信息,使用docker commit 导入时,生成的镜像可以使用docker history查看到镜像的历史信息的。

深入理解Docker容器和镜像

在docker文章的第一篇,我和大家简单的比喻了镜像和容器的关系,有位读者就这个问题和我讨论了一番,这里就这个问题做一个简单的描述,深入理解下镜像和容器。

在镜像层面上:

当我们查看镜像详细信息时,可以看到以下信息:

这里的Layers指的就是一个个只读的文件系统,镜像就是由这样一个个文件系统组成的,我们把镜像运行起来就会成为一个个容器,当我们在容器中做了修改并commit为镜像后,就会不断在原有的Layers层上新增一个Layer层,就像下面看到的这样。

镜像的Layer

所以当我们commit后,我们看到的镜像就是最上层的Layer。

镜像的视角

在容器层面上:

当我们使用docker create [image id]用指定镜像创建容器时,可以理解为在镜像的最上层创建了一个可读可写的Layer,当我们修改完,使用commit提交后,这个容器的可读可写的Layer层就会转化为镜像的只读的Layer层。

而当我们使用docker inspect查看容器的时候只能查看到最上层容器的信息而无法查看到像镜像那样的Layers,这是因为在容器的视角中Layer层是这样的:

当容器中有进程运行时:

容器内部是这样的:

总结

关于深入理解镜像和容器的部分,如若有理解错误的地方希望大家指正,这一部分有些抽象大家可以结合实际操作加深理解,也欢迎各路大佬一起交流探讨。

相关文章
|
5月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
697 6
|
5月前
|
监控 Linux 调度
【赵渝强老师】Docker容器的资源管理机制
本文介绍了Linux CGroup技术及其在Docker资源管理中的应用。通过实例演示了如何利用CGroup限制应用程序的CPU、内存和I/O带宽使用,实现系统资源的精细化控制,帮助理解Docker底层资源限制机制。
555 6
|
5月前
|
Java Linux 虚拟化
【Docker】(1)Docker的概述与架构,手把手带你安装Docker,云原生路上不可缺少的一门技术!
1. Docker简介 1.1 Docker是什么 为什么docker会出现? 假定您在开发一款平台项目,您的开发环境具有特定的配置。其他开发人员身处的环境配置也各有不同。 您正在开发的应用依赖于您当前的配置且还要依赖于某些配置文件。 您的企业还拥有标准化的测试和生产环境,且具有自身的配置和一系列支持文件。 **要求:**希望尽可能多在本地模拟这些环境而不产生重新创建服务器环境的开销 问题: 要如何确保应用能够在这些环境中运行和通过质量检测? 在部署过程中不出现令人头疼的版本、配置问题 无需重新编写代码和进行故障修复
523 2
|
Kubernetes Docker 容器
掌握Docker容器化技术:从入门到实战
掌握Docker容器化技术:从入门到实战
263 0
|
Docker 容器
Docker技术入门与实战
GitBookhttps://www.gitbook.com/book/yeasy/docker_practice/details pdf 版本 下载 epub 版本 下载
2287 0
|
Docker 容器
《Docker技术入门与实战》——导读
在一台服务器上同时运行一百个虚拟机,肯定会被认为是痴人说梦。而在一台服务器上同时运行一千个Docker容器,这已经成为现实。在计算机技术高速发展的今天,昔日的天方夜谭正在一个个变成现实。
1844 0