강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

Sec님의 프로필 이미지
Sec

작성한 질문수

Spring Boot, AWS로 백엔드 서비스 한 사이클 완성하기

여러 컨테이너 사용시 사용할 포트 번호는 무엇으로 하면 되나요?

해결된 질문

작성

·

28

·

수정됨

1

'섹션 3. 데이터를 저장하기, MySQL로 시작하기' - '17. MySQL 데이터베이스 설정하기 (Docker)' 질문입니다.

 

제가 기존에 만들어둔 도커 컨테이너도 3306 포트를 쓰고 있어서 포트 문제 때문에 기존 컨테이너를 삭제하고 진행했습니다.

 

여러 컨테이너를 만들려면 어떻게 해야되나요?

안쓰는 포트 아무대나 만들면 되나요?

예를 들어 지금 3306 포트를 쓰고 있으니까 다음에 만들 컨테이너는 3307을 쓰면 되는건가요?

 

docker run --name mysql-twitter \
-e MYSQL_ROOT_PASSWORD=root123 \
-e MYSQL_DATABASE=twitterdb \
-e MYSQL_USER=dev \
-e MYSQL_PASSWORD=dev123 \
-p 3306:3306 \
-d \
mysql:9.3

3306 포트 말고 다른 포트를 사용할 경우 위 명령어에서 -p 3306:3306는 어떤 식으로 바꾸면 되나요?

답변 1

1

한조각님의 프로필 이미지
한조각
지식공유자

안녕하세요! Sec님

 

여러 컨테이너를 동시에 사용할 때는 로컬 PC에서 바인딩하는 포트만 서로 다르게 잡아주면 됩니다. 컨테이너 내부에서 MySQL이 사용하는 포트는 모두 3306이어도 전혀 문제 없습니다.

 

-p 로컬포트:컨테이너포트
위 규칙을 먼저 인지해주셨다면,

 

이미 -p 3306:3306으로 실행 중인 컨테이너가 있다면, 다음 컨테이너는 -p 3307:3306, 그다음은 -p 3308:3306처럼 로컬 포트만 바꿔서 실행하시면 됩니다. 이렇게 하면 로컬에서는 3307, 3308로 접속하고, 각 컨테이너 내부에서는 동일하게 3306으로 MySQL이 동작합니다.

 

컨테이너마다 별도의 네트워크 공간이 있기 때문에
같은 포트 번호를 사용해도 다른 컨테이너와 서로 간섭하지 않으며,
실제로 포트 충돌이 발생하는 지점은 컨테이너가 아니라 로컬 PC입니다.
따라서 로컬 포트만 겹치지 않게 설정하면 여러 컨테이너를 동시에 실행할 수 있습니다.


답변이 도움되었으면 좋겠습니다. 감사합니다.

Sec님의 프로필 이미지
Sec

작성한 질문수

질문하기