클라우드와 컨테이너의 기초
$ docker run -d -p 8080:80 nginx포트 80에서 대기하는 웹 서버의 이미지 nginx로부터 위의 명령으로 컨테이너를 시작했다. 호스트의 IP 주소는 192.0.2.10이고 방화벽 등의 제한은 없다고 하자. 같은 네트워크에 있는 다른 PC의 브라우저에서 이 웹 서버에 접속하는 URL로 올바른 것은?
- Ahttp://192.0.2.10:80/
- Bhttp://(컨테이너의 IP 주소):8080/
- Chttp://192.0.2.10:8080/
정답과 해설 보기
정답: C. http://192.0.2.10:8080/
-p 호스트의 포트:컨테이너의 포트 형식으로 쓰므로, -p 8080:80은 호스트의 포트 8080에 도착한 통신을 컨테이너의 포트 80으로 전달하라는 지정입니다. 다른 PC에서는 호스트 IP 주소의 포트 8080에 접속합니다. 컨테이너의 IP 주소는 일반적으로 호스트 안의 가상 네트워크의 것이어서 외부 PC에서는 직접 도달하지 않습니다. Dockerfile의 EXPOSE 80은 컨테이너가 사용하는 포트를 나타내는 기록이며, 그것만으로는 호스트의 포트가 공개되지 않으므로 -p 지정이 필요합니다.