我是Docker的新手,并学习了许多教程。我知道我们可以在Docker容器中包含任何东西(数据库,服务器等)。但是,我在许多教程中看到docker映像文件具有“ FROM
一些操作系统发行版”(我知道该发行版不是完整的操作系统,但提供了发行版的实用程序和过程)。我的问题是:
容器总是应该有一个操作系统发行版吗?
如果是,为什么? (其余组件(例如:java vm)不能在内核上运行吗?),
如果否:后果是什么?或一般来说最佳做法是什么?
(我来自Java背景)
答案 0 :(得分:1)
您定义的每个Docker映像都必须具有FROM子句,因为它需要基于另一个映像。您可以创建自己的基本映像,但imo则不需要它。图像只不过是可以在根据图像创建的容器中使用的二进制文件的集合。 docker hub上有很多可用的图像,最好的做法是使图像尽可能小。因此,我建议基于高山的基础图像。
https://hub.docker.com/_/openjdk
如果您真的需要自己的基本图像,请在此处查看
https://docs.docker.com/develop/develop-images/baseimages/
以及评论的链接stackoverflow文章。
docker容器的进程始终使用docker主机的内核,因此docker映像需要与运行容器的主机的内核兼容。泊坞窗容器仅是主机上运行的独立进程,没有特殊的运行时。如果Java进程正在容器中运行,则它实际上在主机上运行,并且在Docker主机上列出主机进程时可以看到它。