【问题标题】:multiple languages in docker containerdocker容器中的多种语言
【发布时间】:2018-02-14 12:42:00
【问题描述】:

我正在尝试构建一个 docker 容器,我可以在其中安装 python 和 java,以及其他一些工具,例如:make.我尝试使用来自互联网的 docker 图像作为我的图像的基础图像,但是我想根据我拥有的不同规格构建我自己的自定义图像。我对为图像提供我的程序可以使用的多种语言和工具特别感兴趣。

【问题讨论】:

  • 有问题吗?
  • 如何制作一个上面有多种语言和工具的 docker 镜像?
  • 可以使用RUN 命令在您的容器中安装任何您喜欢的东西 - 如下所述:docs.docker.com/develop/develop-images/…。但不确定这是一个好主意,正如 Docker 文档中提到的“每个容器应该只有一个关注点”
  • 嗨@bunnmatt 感谢您的回复。我还有几个问题。目前,为了为我的 docker 容器获取 python 和 java,我正在使用可以在此处在线找到的图像:hub.docker.com/r/rappdw/docker-java-python/~/dockerfile。它使用 run 但也更改了 docker 中的 ENV。你能解释为什么会发生这种情况吗?另外,如果您认为我不应该通过下载多种语言来使我的 docker 容器变得太重,那么推荐的替代方法是什么?
  • 抱歉,我不能对那个特定的 dockerfile 发表评论,但我已经扩展了上面的评论作为答案。

标签: docker dockerfile docker-image


【解决方案1】:

您可以使用RUN 命令在容器中安装您喜欢的任何内容 - 如 Docker 文档中所述:https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#run

如果您查看Dockerfile for an official Python image,您会发现这就是 Python 的安装方式。

要使用您自己选择的工具创建 Docker 映像,您可以从基础映像(例如 DebianUbuntu)开始,然后安装您选择的语言。

但是 - 我不推荐这个。 As noted in the Docker best practices“每个容器应该只有一个关注点”,使用 Docker 的标准方法是让一个容器使用一种语言运行一个应用程序。

在您的示例中,您可能有一个基于 Java 的容器用于一个应用程序,一个单独的基于 Python 的容器用于您的 Python 应用程序,第三个包含构建工具。

【讨论】:

  • 嗨@bunnmatt,如果我想为单个程序运行三个容器,我该怎么做。我构建的程序在 python 上运行,但适用于 java 程序。并且它在运行时也需要不同的工具。如何链接每个容器以达到预期的效果?'
  • @cruzhacker2020 我对 Docker 很陌生,但我发现了这个,docs.docker.com/develop/develop-images/…。似乎 Docker 会建议运行 3 个不同的容器,即每种语言一个。只是一个猜测......我的直觉让我认为多语言容器看起来不错???任何人都可以随时对此进行跟进!
猜你喜欢
  • 2020-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-16
  • 2019-10-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多