나는 hadoop을 실행하는 컨테이너가 있습니다. 필자는 입력 디렉토리 생성, 기본 예제 처리, 출력 표시와 같은 Map-Reduce 작업 명령을 포함하는 다른 도커 파일을 가지고 있습니다. 두 번째 파일의 기본 이미지는 첫 번째 도커 파일에서 만든 hadoop_image입니다.실행중인 도커 컨테이너에서 명령을 실행하는 방법은 무엇입니까?
EDIT
Dockerfile - 이로부터 생성
#base image is ubuntu:precise
#cdh installation
#hadoop-0.20-conf-pseudo installation
#CMD to start-all.sh
start-all.sh 하둡
#start all the services under /etc/init.d/hadoop-*
하둡베이스 이미지.
Dockerfile2
#base image is hadoop
#flume-ng and flume-ng agent installation
#conf change
#flume-start.sh
내가 별도로 모두 용기를 실행하고
#start flume services
flume-start.sh. 그것은 잘 작동합니다. 내가
docker run -it flume_service
을 실행하면하지만 수로 시작하고 나에게 배쉬 프롬프트를 보여 [/ 빈/bash는은 flume-start.sh의 마지막 줄입니다]. 연결 예외에 실패 8020 : :이 내가 두 번째 실행중인 컨테이너에
hadoop fs -ls/
를 실행, 나는 다음과 같은 오류를
LS 무엇입니까 : 514fa776649a/172.17.5.188는 localhost로부터 전화 java.net.ConnectException : 연결이 거부되었습니다. 더 자세한 내용은 http://wiki.apache.org/hadoop/ConnectionRefused
나는 hadoop 서비스가 아직 시작되지 않았기 때문에이 오류가 발생한다는 것을 알고 있습니다. 하지만 의심의 여지가 내 첫 번째 컨테이너가 실행 중입니다. 나는 이것을 두 번째 컨테이너의 기본 이미지로 사용하고 있습니다. 그런데 왜이 오류가 발생합니까? flume contianer의 hdfs-site.xml 파일에서 무엇인가를 변경해야합니까?
가상 분산 모드 설치.
제안 사항?
아니면 어떤 포트를 노출해야합니까? 그래서, 나에게 예를
편집을 제공하십시오 2
iptables -t nat -L -n
내가
sudo iptables -t nat -L -n
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DOCKER all -- 0.0.0.0/0 0.0.0.0/0 ADDRTYPE match dst-
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE tcp -- 192.168.122.0/24 !192.168.122.0/24 masq ports: 1024-6
MASQUERADE udp -- 192.168.122.0/24 !192.168.122.0/24 masq ports: 1024-6
MASQUERADE all -- 192.168.122.0/24 !192.168.122.0/24
MASQUERADE all -- 172.17.0.0/16 0.0.0.0/0
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
DOCKER all -- 0.0.0.0/0 !127.0.0.0/8 ADDRTYPE match dst-
Chain DOCKER (2 references)
target prot opt source destination
볼이 고정 표시기의 @의 domian입니다. 컨테이너 안에 있지 않습니다.
편집 는 surazj
이지도 축소 예제에서는 문제가 없습니다. 나는 cdh4.6.0을 설치하고있다. 하나의 컨테이너에서 실행 중입니다. 이제 다른 도커 파일에 대한 설치 지시가 있습니다. flume은 꼭두각시가 필요합니까? 그러나 그것은 별도의 컨테이너로 실행 중입니다. flume 명령이 hadoop_first_docker_file과 동일하면 잘 작동합니다. 그러나 별도의 파일 인 경우 실행중인 컨테이너에서 명령을 실행해야합니다. hadoop_first_docker_file 컨테이너에서 second_docker_file 명령을 실행/지정하는 방법은 무엇입니까? 지금은 분명합니까? 감사. –
주된 관심사는 컨테이너 1에서 스크립트를 공유하기 만하면 컨테이너에 볼륨을 연결하고 스크립트를 볼륨으로 이동할 수 있습니다. 두 컨테이너 모두 볼륨에 액세스 할 수 있습니다 (즉, -v 플래그). 설치시 두 번째 컨테이너에서 독립 실행 형 모드로 flume을 실행하려고하는데 문제가 표시되지 않습니다. flume에서 hdfs에 쓰려고하십니까? – surajz
예 suraj. 두 번째 dockerfile에서 hdfs에 액세스하는 동안 문제가 발생합니다. 첫 번째 도커 파일 –