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层是这样的:

当容器中有进程运行时:

容器内部是这样的:

总结

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

相关文章
|
14天前
|
Kubernetes Cloud Native 微服务
探索云原生技术:容器化与微服务架构的融合之旅
本文将带领读者深入了解云原生技术的核心概念,特别是容器化和微服务架构如何相辅相成,共同构建现代软件系统。我们将通过实际代码示例,探讨如何在云平台上部署和管理微服务,以及如何使用容器编排工具来自动化这一过程。文章旨在为开发者和技术决策者提供实用的指导,帮助他们在云原生时代中更好地设计、部署和维护应用。
|
11天前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
141 77
|
19天前
|
监控 Docker 容器
在Docker容器中运行打包好的应用程序
在Docker容器中运行打包好的应用程序
|
19天前
|
Docker 容器
将本地的应用程序打包成Docker镜像
将本地的应用程序打包成Docker镜像
|
3天前
|
NoSQL PHP MongoDB
docker push推送自己搭建的镜像
本文详细介绍了如何搭建和复盘两个Web安全挑战环境:人力资源管理系统和邮件管理系统。首先,通过Docker搭建MongoDB和PHP环境,模拟人力资源管理系统的漏洞,包括nosql注入和文件写入等。接着,复盘了如何利用这些漏洞获取flag。邮件管理系统部分,通过目录遍历、文件恢复和字符串比较等技术,逐步绕过验证并最终获取flag。文章提供了详细的步骤和代码示例,适合安全研究人员学习和实践。
19 3
docker push推送自己搭建的镜像
|
3天前
|
关系型数据库 应用服务中间件 PHP
实战~如何组织一个多容器项目docker-compose
本文介绍了如何使用Docker搭建Nginx、PHP和MySQL的环境。首先启动Nginx容器并查看IP地址,接着启动Alpine容器并安装curl测试连通性。通过`--link`方式或`docker-compose`配置文件实现服务间的通信。最后展示了Nginx配置文件和PHP代码示例,验证了各服务的正常运行。
18 3
实战~如何组织一个多容器项目docker-compose
|
12天前
|
数据建模 应用服务中间件 nginx
docker替换宿主与容器的映射端口和文件路径
通过正确配置 Docker 的端口和文件路径映射,可以有效地管理容器化应用程序,确保其高效运行和数据持久性。在生产环境中,动态替换映射配置有助于灵活应对各种需求变化。以上方法和步骤提供了一种可靠且易于操作的方案,帮助您轻松管理 Docker 容器的端口和路径映射。
53 3
|
19天前
|
数据库 Docker 容器
Docker在现代软件开发中扮演着重要角色,通过Dockerfile自动化构建Docker镜像,实现高效、可重复的构建过程。
Docker在现代软件开发中扮演着重要角色,通过Dockerfile自动化构建Docker镜像,实现高效、可重复的构建过程。Dockerfile定义了构建镜像所需的所有指令,包括基础镜像选择、软件安装、文件复制等,极大提高了开发和部署的灵活性与一致性。掌握Dockerfile的编写,对于提升软件开发效率和环境管理具有重要意义。
41 9
|
19天前
|
存储 安全 数据安全/隐私保护
Docker 容器化应用管理更加高效,但数据安全和业务连续性成为关键。
在数字化时代,Docker 容器化应用管理更加高效,但数据安全和业务连续性成为关键。本文探讨了 Docker 应用的备份与恢复策略,涵盖备份的重要性、内容、方法及常见工具,制定备份策略,恢复流程及注意事项,并通过案例分析和未来趋势展望,强调备份与恢复在保障应用安全中的重要性。
25 2