CentOS Docker镜像的目的是什么? [重复]

问题描述 投票:1回答:2

这个问题在这里已有答案:

从我读过和听过的关于Docker的所有内容来看,它的全部意义在于封装一个应用程序,以便它可以在任何机器上运行。它通过将所需的环境(工具/依赖项)包装到docker镜像中来实现这一点。容器是图像的实例。 Docker容器中没有运行的操作系统。

现在,如果这一切都是真的,那为什么会存在:CentOS official docker image?我认为docker图像仅用于应用程序,而不是整个操作系统。

每当我实例化该图像时,我都会得到一个容器,当它连接到它时,它似乎是一个正常运行的CentOS shell。

你可以自己做,看看我的意思:

  • Dockerfile内容:FROM centos:centos7
  • 建立图像:docker build centos-img .
  • 运行容器:docker run -ti centos-img
  • 分离:ctrl+p, ctrl+q
  • 重新加入:docker attach <container id>

这看起来和感觉就像一个VM。

如果我运行cat /etc/os-release它甚至说我正在运行CentOS。

究竟是什么?我可以使用CentOS docker镜像,就好像它是一个虚拟机吗?有什么限制?

(让我感到困惑的是docker containers != VMs,然而,通过探索,我创建了一个看起来和感觉像VM的docker镜像。为什么我会想要再次运行VM,如果我可以运行一个类似于a的轻量级docker镜像VM?)


这个centOS docker镜像只是一个起始位置,我应该构建(即,将我的应用程序放入),以便它只是作为我的应用程序的主机?我阅读和挖掘Dockerfile示例越多,我就越相信这是假设是真的。


我真正想做的事情:

我有一堆小应用程序/服务,它们共同作为构成大型应用程序的系统。我目前在centOS机器上运行该系统。我希望能够轻松地运行这个大型应用程序的多个实例,每个实例都在他们自己的环境中/没有踩到彼此的脚趾。是否有可能通过使用centOS docker image + all of the small applications/services needed来做到这一点,导致large application image?有了这个图像,我可以启动多个容器,每个容器运行一个单独的大型应用程序实例?这是与Docker合理/可实现的事情吗?


我的一些理解可能不正确,或者我可能建议以不打算使用的方式使用Docker。如果是这样,请随意指出。谢谢!

docker
2个回答
0
投票

这是一个多方面的问题,我不太可能通过这个回复做到公道,但我会尝试回答你的核心问题。我建议您阅读包含容器基础知识的许多文章。

从根本上说,容器共享内核(通常是Linux)而不是操作系统(CentOS,Debian,Ubuntu等)。

最简单的Linux容器映像称为scratch,它是空的,因此可以有效地为您提供Linux内核。

在另一个极端,完整的Linux操作系统映像,包括CentOS。这些是完整的操作系统映像,为用户和应用程序提供了与“裸机”或VM上运行此类操作系统最相似的体验。

尝试以更接近“划痕”为目标的良好容器实践比目标更接近于例如centos。从根本上说,操作系统是一大堆代码,而您的应用程序很可能不需要这些代码。尽管拥有所有这些额外功能可能会很好,但这意味着您必须维护(并保护)多余的(!)代码,这意味着您的图像也必须使用它拖动所有这些内容。

您的应用程序不太可能在scratch上运行,因为它们可能依赖于其他应用程序和共享库。如果您已经清楚了解这些依赖关系,那么您应该从“scratch”这样的图像开始,并添加您的应用程序所需的内容。

如果你在网上查看Dockerfiles,你会看到很多最好的例子都是从较小的基本图像开始,添加必要的包,最后添加相关的二进制文件。

看到:

HTH!


0
投票

Docker中CentOS(和其他完整操作系统发行版)的一个常见用途是,开发人员需要在本地运行完整系统以进行开发/测试/调试,但它不能在生产中运行Docker。运行不适合虚拟机甚至是裸机的docker的单片应用程序并不罕见。

一个示例可能是作为AMI部署到AWS的应用程序;这是在Mac或Windows机器上重现并且不干净(温和地说)直接安装到Linux主机,可能成本过高,不适合离线使用以启动更多云托管实例。

Docker的强大功能之一是它能够运行最小的系统,如果这是所需要的或完整的操作系统安装,即使这不被认为是最佳的。它当然有它的用途。

© www.soinside.com 2019 - 2024. All rights reserved.