2016-04-02 17 views
2

Ich würde gerne Hadoop und Flume dockerized ausführen. Ich habe ein Standardbild Hadoop mit allen Standardwerten. Ich kann nicht sehen, wie diese Dienste miteinander in getrennten Containern kommunizieren können.Docker Intercontainer Kommunikation

Flume ‚s Dockerfile sieht wie folgt aus:

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 

Antwort

1

Sie sollten Ihre Container verknüpfen. Es gibt einige Varianten, wie Sie dies umsetzen können.

1) Veröffentlichen Ports:

docker run -p 50070:50070 hadoop

Option p bindet Port 50070 Ihre Docker-Container mit Port 50070 von Host-Maschine

2) Link-Container (mit Docker-compose)

docker-compose.yml

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

Link-Option hier bindet Ihr Gerinne Behälter mit hadoop

weitere Informationen über dieses https://docs.docker.com/engine/userguide/networking/default_network/dockerlinks/

+0

Warum 50070 ist die Portnummer? – plaidshirt

+0

Es ist nur zufälliger Port, Sie können Ports verwenden, was Sie stattdessen benötigen – Cortwave

+0

Sollte ein Hadoop-Port sein? Welche? – plaidshirt