티스토리 뷰

안녕하세요. 가끔 헷갈리는 포트가 중복될 때 도커 네트워크 부분을 정리해 보았습니다. 혹시 틀린 점 있으면 언제든 말씀주세요..

도커 네트워크의 개념과 포트포워딩 하는 방법을 알고 있다는 전제하에 기록합니다.

 

같은 도커 네트워크에 묶여있는 컨테이너들은 도메인 이름을 통해 서로를 찾아갈 수 있습니다.

하지만 여러 서비스를 같은 PC에서 도커로 실행 할 경우 DB포트가 겹치는 경우같은 것이 발생할 수 있습니다.

이때 포트포워딩을 하면 통신할 수 있는 같은 포트의 컨테이너들을 여러개 실행할 수 있게 되는데, 이때 해당 컨테이너와 통신을 하는 경우가 아래 3가지로 나뉩니다.

1. HostPC 밖에서 연결을 시도하는 경우

2. Local 환경에서 연결을 시도하는 경우

3. 같은 Docker 네트워크 내에서 연결을 시도하는 경우


1. HostPC 밖에서 연결을 시도하는 경우

먼저 서비스1과 같이 HostPC 밖에서 연결을 시도하는 경우에는 3310:3306으로 포트포워딩 되어있을 때

HostPC의 주소를 알아야 하며 3310포트로 접근하면 됩니다. (host.example.com:3310)

2. Local환경에서 시도하는 경우

서비스 2와 같이 Local환경에서 연결을 시도하는 경우에는 3320:3306으로 포트포워딩 되어있을 때

HostPC주소의 3320포트로 접속하면 됩니다 (localhost:3320)

여기서 헷갈릴 수 있는데 로컬호스트에서는 3306으로 바로 접근할 수 없습니다. - 토커네트워크는 로컬과 독립된 가상네트워크 환경

3. 같은 Docker 네트워크 내에서 연결을 시도하는 경우

서비스 3과같이 컨테이너로 실행되고 있는 서비스는 같은 도커 네트워크에 연결되어 있다면, 3310:3306으로 포트포워딩 되어있어도 3310포트가 아닌 3306포트를 통해서 연결하게 됩니다. 또한 도메인네임을 통해서 다른 컨테이너를 찾기 때문에 (DB3.IP:3306) 로 연결할 수 잇습니다.

 

프로세스는 포트를 통해 통신을하기 때문에 한 PC에서 실행되는 프로세스는 중복된 포트를 지닐 수 없습니다. 하지만 각 컨테이너는 독립된 환경이므로 사용자 입장에서는 같은 포트를 가지고 있는것처럼 보일 수 있습니다.


요약

댓글
최근에 올라온 글
최근에 달린 댓글
250x250