3个不同的应用程序和docker集装箱

我想首先在Docker中本地设置Kabana和Elastic Search 以便从本地不在Docker容器中的Python Web应用程序显示日志。 尽pipe在一台服务器上,Python应用程序在Docker容器中。

卡巴纳和弹性search没有安装在服务器上,本地也没有。

  • 是否有可能把Kabana和Elastic Searcn放到不同的docker集装箱中,还是应该把它们放到一个单独的集装箱中? 更新:推荐哪个选项?

  • 如果是单一的,那么在卡巴纳和弹性search都存在的情况下,没有可用的docker图像,那我该怎么办?

  • 他们将能够从我的Python Web应用程序检索本地不在docker集装箱中的日志,还是必须将Python应用程序放入一个容器中? 如果是后者,它可以是单独的容器,还是应该把它放入与Kibana和Elastic Search相同的容器?

我会尽力回答你的问题:

  1. 是的,这是可能的,因为容器可以与另一个容器共同使用。

链接允许容器相互发现并安全地将有关一个容器的信息传输到另一个容器。 当您设置链接时,您会在源容器和收件人容器之间创buildpipe道。 接收者可以访问关于源的select数据。 要创build链接,请使用 – 链接标志。

  1. 您可以创build一个自定义图像。

Docker可以通过从Dockerfile读取指令来自动构build图像。 Dockerfile是一个文本文档,其中包含用户可以在命令行上调用以组装图像的所有命令。 使用Docker构build用户可以创build一个自动构build,连续执行几条命令行指令。 更多 – > https://docs.docker.com/engine/reference/builder/

  1. 你最好放在一个容器,可以分离没有任何问题。

为了更好地pipe理所有的设置,我build议你看看Docker Compose 。

下面是一个如何设置两个容器被链接的例子:

elasticsearch: image: elasticsearch ports: - 9200:9200 kibana: image: kibana ports: - 5601:5601 environment: - ELASTICSEARCH_URL=http://elasticsearch:9200 links: - elasticsearch 

简短的回答:是的,你是自己的Dockfile,是的。

Docker容器可以通过共享卷和网桥进行通信。 https://docs.docker.com/engine/userguide/containers/dockervolumes/ https://docs.docker.com/engine/userguide/containers/networkingcontainers/

至于你的本地python应用程序,这取决于实现。 如果你正在写本地文件,那么量是最好的方法。 卷是映射到容器内的path的本地主机目录。

如果你是通过networking协议来完成的话,那么你要公开容器的端口,以便你的python应用程序可以访问它。

现在关于你可能制作自己的形象的问题。 这很容易做到。 我将从创build一个名为“Dockerfile”的文件开始,并使用像Ubuntu这样的基础映像

 FROM ubuntu:14.04 

然后,我会添加安装命令来安装您所需的软件包

 RUN apt-get update && apt-get install openjdk-7-jre RUN apt-get install ... (etc) 

本质上,你想创build在你的Dockerfile中configuration一个新安装的步骤https://docs.docker.com/engine/userguide/containers/dockerimages/