2017-04-08 8 views
0

나는 내 고정 표시기 컨테이너를 실행 해요. 내가 내 도커 centos sshd 암호없는 서버를 실행하는 방법?</p> <pre><code>docker run -d sequenceiq/hadoop-docker:2.6.0 </code></pre> <p><a href="https://github.com/sequenceiq/hadoop-docker/blob/master/Dockerfile" rel="nofollow noreferrer">Dockerfile is here</a> :

ssh -v localhost -p 22 

을 실행하는거야 내가

OpenSSH_7.4p1, LibreSSL 2.5.0 
debug1: Reading configuration data /Users/User/.ssh/config 
debug1: Reading configuration data /etc/ssh/ssh_config 
debug1: Connecting to localhost [::1] port 22. 
debug1: connect to address ::1 port 22: Connection refused 
debug1: Connecting to localhost [127.0.0.1] port 22. 
debug1: connect to address 127.0.0.1 port 22: Connection refused 
ssh: connect to host localhost port 22: Connection refused 
받고 있어요 그리고

6bfa4f2fd3b5  sequenceiq/hadoop-docker:2.6.0 "/etc/bootstrap.sh -d" 4 minutes ago  Up 4 minutes  22/tcp, 8030-8033/tcp, 8040/tcp, 8042/tcp, 8088/tcp, 49707/tcp, 50010/tcp, 50020/tcp, 50070/tcp, 50075/tcp, 50090/tcp kind_hawking 

을 : 나는 docker ps을 실행하고있어 점점 - 내 Mac에서 시작되면

가정 : 나는 이것이 다른 centos이기 때문에 이것이 다른 centos sshd 질문의 중복이 아니다고 생각한다. OS 버전. (유사한 사람들을 위해서 - 잠재적으로 비슷한 질문을하는 것이고 그것은 작동하지 않습니다.)

내 질문 : 도커 centos sshd 암호없는 서버를 실행하는 방법?


편집 : 앤드류가 내 질문을 수정 돕는 슈퍼 도움이되었습니다 - 그래서 여기에 표시됩니다. 내가 실행 해요 그리고

sudo docker build -t my-hdfs . 

: 2.6.0

CMD ["/etc/bootstrap.sh", "-d"] 

# Hdfs ports 
EXPOSE 50010 50020 50070 50075 50090 8020 9000 
# Mapred ports 
EXPOSE 10020 19888 
#Yarn ports 
EXPOSE 8030 8031 8032 8033 8040 8042 8088 
#Other ports 
EXPOSE 49707 2122 

EXPOSE 9000 

EXPOSE 2022 

지금 내가 이것을 짓고 있어요 : sequenceiq/하둡 - 고정 표시기에서 이곳으로

Dockerfile 업데이트됩니다 이것 :

sudo docker run -d -p my-hdfs 
같은 결과

sudo docker ps 

:와 363,210

그럼 난 확인하고있어 프로세스 A를

docker inspect --format '{{ .NetworkSettings.IPAddress }}' d9c9855cfaf0 

: 다음

d9c9855cfaf0  my-hdfs    "/etc/bootstrap.sh -d" 2 minutes ago  
Up 2 minutes  0.0.0.0:32801->22/tcp, 0.0.0.0:32800->2022/tcp, 
0.0.0.0:32799->2122/tcp, 0.0.0.0:32798->8020/tcp, 0.0.0.0:32797->8030/tcp, 
0.0.0.0:32796->8031/tcp, 0.0.0.0:32795->8032/tcp, 0.0.0.0:32794->8033/tcp, 
0.0.0.0:32793->8040/tcp, 0.0.0.0:32792->8042/tcp, 0.0.0.0:32791->8088/tcp, 
0.0.0.0:32790->9000/tcp, 0.0.0.0:32789->10020/tcp, 0.0.0.0:32788->19888/tcp, 
0.0.0.0:32787->49707/tcp, 0.0.0.0:32786->50010/tcp, 0.0.0.0:32785->50020/tcp, 
0.0.0.0:32784->50070/tcp, 0.0.0.0:32783->50075/tcp, 0.0.0.0:32782->50090/tcp 
agitated_curran 

내가 실행 해요 IP 주소를 얻을 수 있습니다 결과는

172.17.0.3 
OpenSSH_7.4p1, LibreSSL 2.5.0 
debug1: Reading configuration data /Users/User/.ssh/config 
debug1: Reading configuration data /etc/ssh/ssh_config 
debug1: Connecting to 172.17.0.3 [172.17.0.3] port 32800. 

debug1: connect to address 172.17.0.3 port 32800: Operation timed out 
ssh: connect to host 172.17.0.3 port 32800: Operation timed out 

내 질문은 : 어떻게 내 고정 표시기의 CentOS는 실행 암호없이 서버에 sshd를 얻기 위해이 결과를 제공

ssh -v 172.17.0.3 -p 32800 

:3210 그럼 내가 그것을 테스트거야?

답변

3

컨테이너 대신 로컬 SSH 서버에 연결하려고합니다.컨테이너 내부의 모든 포트에 연결하려면 해당 컨테이너를 노출하고 게시해야하며, 특히 동일한 호스트의 여러 포트에서 여러 유사한 컨테이너를 실행하려는 경우 다른 컨테이너로 매핑해야합니다. Expose을 참조하십시오.

그래서 귀하의 경우 귀하의 명령은

docker run -p 2222:22 -d sequenceiq/hadoop-docker:2.6.0 

및 SSH 명령 (연결된 고정 표시기 파일에서와 같이) 다른 고정 표시기 용기에 가 액세스하게 고정 표시기 포트를 노출

ssh -v localhost -p 2222 

해야한다 하지만 호스트 컴퓨터에는 없습니다. 노출 된 포트와 게시 된 포트의 차이점을 이해하려면 this question

그러나 포트 2222에 연결하려고하면 작동하지 않습니다. Dockerfile 2.6.0 버전을 살펴보면, sshd가 포트 2122에서 수신 대기하도록 구성되었지만 노출 포트가 22 인 here과 같이 버그가 있음을 발견했습니다. 또한 제공 한 최신 Dockerfile을 만들려고 할 때 31 단계에서 실패 했으므로 더 이상 반전하려고 할 수 있습니다. 질문 업데이트 후

편집 :

제공된 고정 표시기 ps의 출력에서 ​​봐, 그리고 Dockerfile합니다. (당신은 변경하지 않은 경우 우리는 당신의 전체 dockerfile을 가지고 있지 않기 때문에 비록 있음), 및 출력에 우리가

0.0.0.0:32799->2122/tcp 
0.0.0.0:32800->2022/tcp 

를 참조하면 이후 ssh -v localhost -p 32799 대신 32800로 연결해야 포트 2122에서 수신하도록 구성 sshd는 아무 것도 콘테이너 안쪽에 2022 년 항구에 경청하고 있지 않다

+0

감사합니다 - 저것은 도움이되었다 - 나는 당신의 의견에 따라 질문을 새롭게했다 – hawkeye