2017-05-19 3 views
1

도커 이미지에서 실행중인 http://localhost:8000을 통해 nodejs 기반 서비스에 액세스 할 수 없습니다. Mac 용 도커 (https://docs.docker.com/docker-for-mac/)를 사용하고 있습니다.도커에서 실행중인 서비스에 액세스 할 수 없습니다.

여기에서 자습서는 입니다. 서버는 포트 8000에서 실행

나는 다음과 고정 표시기 이미지를 시작

$ docker run -p 8000:8000 -d geuis/node-server:latest 

내가 docker ps을 실행하면 내가 볼 :

CONTAINER ID  IMAGE      COMMAND    CREATED    STATUS    PORTS     NAMES 
9fa2e446918b  geuis/node-server:latest "npm start"   6 seconds ago  Up 5 seconds  0.0.0.0:8000->8000/tcp unruffled_lewin 

I docker exec -it 9fa2e446918b /bin/bash 나는 고정 표시기를 액세스 할 수있는 경우 VM을 그리고 나는 curl http://localhost:8000 수 있으며 컨테이너 내부에서 서버에 액세스 할 수 있습니다.

그러나 내 시스템 단말기에서 동일한 curl http://localhost:8000을 시도하고 액세스 할 수 없습니다.

내가 다음에해야 할 일이 확실하지 않습니다.

+1

Mac 용 도커로 사용해 보았습니다. 항구 이외에 다른 수정 사항이 있습니까? – Holger

+0

기본 Docker IP, .i.e http://192.168.99.100:8000으로 서비스에 액세스 할 수 있습니까? (또는 기본값 이외의 다른 IP를 지정한 경우 다른 IP) – dchar

답변

4

는 다음 시도 문들을 : localhost에서 수신이 표현처럼 보이는 당신이 언급 자습서를 읽는에서

app.listen(PORT, '0.0.0.0'); 

합니다. 로컬로 실행 중이지만 컨테이너 내부에있는 경우 localhost은 컨테이너 외부에있는 localhost과 같지 않습니다.

0.0.0.0unspecified IPv4 address이므로 Express는 사용자의 요청이 컨테이너 외부에서 들어오는 IP가 될 수있는 모든 IP에 바인딩합니다.

+0

네. Express 대신 hapijs를 사용하지만 동일한 솔루션. – Geuis

관련 문제