Docker镜像与容器:有什么区别?

本文将探讨Docker镜像和容器之间的差异,帮助您了解如何以及何时使用它们。

Docker容器化平台有助于使用容器轻松创建、部署和运行应用程序。如果您是Docker新手,您可能想知道Docker映像与Docker容器有何不同。尽管Docker镜像和容器具有相似的目的,但它们有不同的用途。镜像是环境的快照,容器运行软件。将容器视为软件的运输容器-它保存文件和程序等重要内容,以便应用程序可以有效地从生产者交付给消费者。

Docker镜像与容器区别

Docker概述

Docker、Flatpak和Snaps等解决方案都有相同的目标,即将应用程序打包到单个捆绑包中以安装在任何Linux发行版中。

SolomonHykes于2013年将Docker作为一个开源项目推出。他们的第一个商业版本已于2014年准备投入生产。

容器化的最大好处之一是,它使开发人员能够将其应用程序与在任何Linux发行版上运行所需的所有依赖项打包在一起。这样就无需手动安装每个依赖项。

多个容器可以同时运行,每个容器都基于相同或不同的映像。Docker在创建操作系统的多个实例方面与虚拟机类似。但是,Docker允许您创建在同一操作系统上运行的容器。因此,在给定的硬件组合上可以运行比虚拟机更多的容器。

Docker容器甚至可以在虚拟机中运行。与创建虚拟机相比,Docker提供了额外的抽象和自动化层,使其更易于使用。

容器化平台在开发人员和系统管理员中越来越受欢迎,因为它包含应用程序的完整文件系统及其所有依赖项。此设置支持不可变的基础架构并保证部署是幂等的-无论您重复操作多少次,它们都将保持完全相同。

Docker守护进程在后台运行以管理映像、容器等。客户端和守护程序使用套接字或通过RESTfulAPI进行通信。

Docker镜像与容器区别

什么是Docker镜像?

图像是只读模板,包含创建容器的说明。Docker镜像创建在Docker平台上运行的容器。

将图像想象成容器运行时内容的蓝图或快照。

图像由多个堆叠层组成,就像照片编辑器中的层一样,每个层都会改变环境中的某些内容。映像包含运行应用程序的代码或二进制文件、运行时、依赖项和其他文件系统对象。该映像依赖于主机操作系统(OS)内核。

例如,要构建Web服务器映像,请从包含UbuntuLinux(基本操作系统)的映像开始。然后,在上面添加Apache和PHP等软件包。

您可以使用Dockerfile手动构建映像,Dockerfile是一个包含创建Docker映像的所有命令的文本文档。您还可以使用命令从称为注册表的中央存储库或DockerHub等存储库中提取映像dockerpull[name]。

当Docker用户运行一个镜像时,它会成为一个或多个容器实例。容器的初始状态可以是开发人员想要的任何状态——它可能有一个已安装和配置的Web服务器,或者只有一个以root身份运行的bashshell。但实际上,大多数映像都包含一些预配置的软件和配置文件。

Docker镜像是不可变的,因此一旦创建就无法更改。如果您需要更改某些内容,请使用您的更改创建另一个容器,然后将其另存为另一个图像。或者,只需使用现有映像作为基础来运行新容器并更改该容器即可。

成功构建应用程序后,Docker可以进一步将镜像导出到其他镜像中。彼此派生的图像通常称为父图像和子图像。

一张图片可能有多个标签,但每个标签都是唯一的。标签区分图像,例如ubuntu:latest或ubuntu:14.04。

映像本身并不运行,但您可以从Docker映像创建并运行容器。

Docker镜像与容器区别

什么是容器?

容器是一个隔离的地方,应用程序在其中运行,不会影响系统的其余部分,也不会让系统影响应用程序。由于容器是隔离的,因此非常适合安全运行的软件,例如数据库或Web应用程序,这些软件需要访问敏感资源,而无需向系统上的每个用户授予访问权限。

由于容器在Linux上本机运行并共享主机的内核,因此它是轻量级的,不会比其他可执行文件使用更多的内存。如果您停止容器,它不会自动重新启动,除非您以这种方式配置它。然而,容器比虚拟机更高效,因为它们不需要整个操作系统的开销。它们与其他容器共享单个内核,并在几秒钟而不是几分钟内启动。

您可以使用容器将应用程序及其所需的所有组件打包,然后将其作为一个单元全部发送出去。这种方法很受欢迎,因为它消除了开发、质量保证和生产环境之间的摩擦,从而实现了更快的软件交付。在软件容器内构建和部署应用程序可以消除与其他开发人员协作编写代码时“在我的机器上运行”的问题。

这些应用程序还可以在任何基础设施和任何云中运行。您可以将应用程序及其底层基础设施与其他应用程序隔离。

Docker镜像与容器

Docker镜像在Docker容器中执行代码。您可以在Docker映像上添加核心功能的可写层来创建正在运行的容器。

将Docker容器视为正在运行的映像实例。您可以从同一个映像创建许多容器,每个容器都有自己独特的数据和状态。

虽然镜像不是创建容器的唯一方式,但却是一种常用的方法。

采用容器的一个主要好处是开发、操作和测试的标准化和简化。然而,为了让团队充分利用容器,他们需要确保开发人员、运营工程师和测试人员创建一致的环境。

持续集成和持续部署(CI/CD)管道可以构建、测试和打包容器。然后,部署将该容器分发到运行时环境,在该环境中它可以作为应用程序的一部分执行。

结论

容器和镜像都允许用户指定应用程序依赖项和配置,并描述机器运行该应用程序所需的一切。然而,容器和镜像有不同的生命周期。例如,您可以在PivotalCloudFoundry等基于容器的系统上使用容器,但不能使用映像。同样,您可以在Heroku或OpenShift等非容器系统中使用映像,但不能使用容器。

这不是选择容器或图像的问题。它们相互依赖,并且您需要两者都与Docker一起工作。

现在您已经了解了Docker映像和容器之间的细微差别,您可以充分利用Docker平台。使用Docker时,自动化可帮助您快速集成并释放开发人员时间来创建新的应用程序功能。

转载请注明出处:https://www.cloudnative-tech.com/introduction/5996.html

(0)
上一篇 2023年8月30日 下午3:41
下一篇 2023年5月18日 下午1:57

相关推荐

  • kubernetes认证有什么用?

    本文将详细介绍Kubernetes认证的作用、流程、组件和实现方式,帮助读者更好地了解Kubernetes认证的原理和实践。

    2023年5月6日
    0
  • 容器云是什么意思?

    容器云是一种新兴的云计算技术,它是在传统虚拟化技术的基础上,通过容器化的方式实现应用程序和基础设施的解耦,提高了应用程序的可移植性、可靠性和安全性,简化了应用程序的部署和管理,提高了系统的可扩展性和可靠性。本文将详细介绍容器云的定义、原理和应用场景,帮助读者更好地了解容器云技术。

    2023年5月29日
    0
  • 容器管理技术包括哪些方面?

    容器管理技术是指对容器化应用程序进行部署、管理和监控的技术。它可以帮助企业和开发者实现快速部署和管理容器化应用程序,提高应用程序的可靠性、可用性和可扩展性,降低运维的成本和复杂度。本文将介绍容器管理技术的各个方面。

    2023年6月7日
    0
  • 云容器是什么?

    云容器是一种基于容器技术的虚拟化解决方案,它将应用程序及其相关依赖项打包成轻量级、可移植且可扩展的容器,以实现快速部署、弹性伸缩和高效管理。云容器的概念源于云计算和容器化技术的融合,它为应用程序的开发、交付和运维提供了更高的灵活性和效率。

    2023年6月27日
    0
  • 微服务架构的优缺点是什么?

    微服务架构的优点包括灵活性、可伸缩性、可维护性和独立性等,但也存在着服务拆分难度大、服务通信复杂、服务治理和容错机制等挑战。

    2023年5月5日
    0