Docker 容器间通信

Docker intercontainer communication

我想 运行 HadoopFlume 码头化。我有一个标准的 Hadoop 图像,其中包含所有默认值。我看不出这些服务如何在单独的容器中相互通信。

FlumeDockerfile 看起来像这样:

FROM ubuntu:14.04.4

RUN apt-get update && apt-get install -q -y --no-install-recommends wget

RUN mkdir /opt/java
RUN wget --no-check-certificate --header "Cookie: oraclelicense=accept-securebackup-cookie" -qO- \
  https://download.oracle.com/otn-pub/java/jdk/8u20-b26/jre-8u20-linux-x64.tar.gz \
  | tar zxvf - -C /opt/java --strip 1

RUN mkdir /opt/flume
RUN wget -qO- http://archive.apache.org/dist/flume/1.6.0/apache-flume-1.6.0-bin.tar.gz \
  | tar zxvf - -C /opt/flume --strip 1

ADD flume.conf /var/tmp/flume.conf
ADD start-flume.sh /opt/flume/bin/start-flume

ENV JAVA_HOME /opt/java
ENV PATH /opt/flume/bin:/opt/java/bin:$PATH

CMD [ "start-flume" ]

EXPOSE 10000

你应该 link 你的容器。有一些变体可以如何实现它。

1) 发布端口:

docker run -p 50070:50070 hadoop

选项 p 将您的 docker 容器的端口 50070 与主机

的端口 50070 绑定

2) Link 个容器(使用 docker-compose)

docker-compose.yml

version: '2'
services:
 hadoop:
  image: hadoop:2.6
 flume:
 image: flume:last
 links:
 - hadoop

link 选项将您的 flume 容器与 hadoop

绑定

关于此的更多信息https://docs.docker.com/engine/userguide/networking/default_network/dockerlinks/