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

当容器中有进程运行时:

容器内部是这样的:

总结

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

相关文章
|
3天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
12 2
|
3天前
|
运维 Kubernetes Cloud Native
云原生技术:容器化与微服务架构的完美结合
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术以其灵活性和高效性成为企业的新宠。本文将深入探讨云原生的核心概念,包括容器化技术和微服务架构,以及它们如何共同推动现代应用的发展。我们将通过实际代码示例,展示如何在Kubernetes集群上部署一个简单的微服务,揭示云原生技术的强大能力和未来潜力。
|
1天前
|
运维 Cloud Native 虚拟化
一文吃透云原生 Docker 容器,建议收藏!
本文深入解析云原生Docker容器技术,涵盖容器与Docker的概念、优势、架构设计及应用场景等,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
一文吃透云原生 Docker 容器,建议收藏!
|
1天前
|
安全 持续交付 云计算
揭秘云计算中的容器化技术及其优势
揭秘云计算中的容器化技术及其优势
5 1
|
2天前
|
缓存 监控 开发者
掌握Docker容器化技术:提升开发效率的利器
在现代软件开发中,Docker容器化技术成为提升开发效率和应用部署灵活性的重要工具。本文介绍Docker的基本概念,并分享Dockerfile最佳实践、容器网络配置、环境变量和秘密管理、容器监控与日志管理、Docker Compose以及CI/CD集成等技巧,帮助开发者更高效地利用Docker。
|
3天前
|
监控 持续交付 Docker
Docker 容器化部署在微服务架构中的应用有哪些?
Docker 容器化部署在微服务架构中的应用有哪些?
|
3天前
|
监控 持续交付 Docker
Docker容器化部署在微服务架构中的应用
Docker容器化部署在微服务架构中的应用
|
3天前
|
安全 持续交付 Docker
微服务架构和 Docker 容器化部署的优点是什么?
微服务架构和 Docker 容器化部署的优点是什么?
|
4天前
|
Kubernetes Cloud Native Docker
云原生技术探索:容器化与微服务的实践之道
【10月更文挑战第36天】在云计算的浪潮中,云原生技术以其高效、灵活和可靠的特性成为企业数字化转型的重要推手。本文将深入探讨云原生的两大核心概念——容器化与微服务架构,并通过实际代码示例,揭示如何通过Docker和Kubernetes实现服务的快速部署和管理。我们将从基础概念入手,逐步引导读者理解并实践云原生技术,最终掌握如何构建和维护一个高效、可扩展的云原生应用。
|
5天前
|
NoSQL Redis Docker
【赵渝强老师】使用Docker Compose管理容器
Docker Compose 通过 YAML 文件管理多个容器,简化复杂系统的部署和管理。本文介绍了 Docker Compose 的基本概念,并通过一个包含 Redis DB 和 Python Web 模块的示例,展示了如何使用 Docker Compose 部署和管理多容器应用。手动部署和 Docker Compose 部署的对比突显了 Docker Compose 在系统复杂度增加时的优势。