Docker와 포트포워딩

 도커 컨테이너를 실행하면 NAT와 비슷한 환경에서 사용하게 된다. 

 

NAT이란: https://eckrin.tistory.com/71

 

컨테이너가 실행되는 호스트 시스템에는 이러한 기능이 사용되기 때문에, 외부에서 컨테이너 안에서 실행하는 프로그램에 대한 접근을 위해 포트포워딩이 필요할 수 있다. 한마디로 호스트의 해당 포트를 컨테이너의 대상 포트로 연결해서 컨테이너 외부에서도 접근할 수 있게 된다.

 

docker run -p 8080:80 --name redis_container redis_image

 

 따라서 도커에서는 위와 같이 -p옵션을 통해서 포트포워딩을 설정할 수 있는데, 위와 같이 컨테이너를 실행하면 이 redis 컨테이너의 8080번 포트로 들어오는 모든 호스트 요청은 도커 컨테이너의 80번 포트로 전달된다. 만약 호스트의 8080포트가 이미 사용중인 경우, 8079로 접속하면 도커로 연결되도록 포워딩 해줄수도 있다.

 

얼마 전 redis 실행시 이러한 포트포워딩 설정을 해주지 않아 Connection 에러가 생긴적이 있다. (https://eckrin.tistory.com/157)