강의

멘토링

로드맵

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

김어진님의 프로필 이미지
김어진

작성한 질문수

풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, 배포까지) [풀스택 Part3]

mysql 포트 질문입니다.

작성

·

399

1

안녕하세요, 좋은 강의 감사합니다.

docker-compose에서 mysql설정할 때, ports를 사용해서 연결했습니다. (ubuntu 20.04)
port는 호스트 내부의 컨테이너끼리는 컨테이너 포트로 특정 컨테이너에 접근할 수 있고,
호스트 외부에서는 컨테이너 포트와 바인딩된(연결된) 호스트 포트를 통해 특정 컨테이너에 접근할 수 있다고 이해하고 있는데 보안을 위해서 port보단 expose를 사용해서 mysql에 내부 컨테이너들끼리 통신하도록 하는 것이 나을 지 궁금하여 질문을 남기게 되었습니다.

호스트: ubuntu 20.04, 내부 컨테이너: docker-compose에서 service 컨테이너들

답변 1

1

안녕하세요. 답변도우미입니다. 기본적으로는 서비스의 구성이 어떻게 되느냐에 따라, 다르겠지만요. 일반적으로는 expose를 사용하는 것이 보안 측면에서 더 좋은 선택입니다. portsexpose 사이의 주요 차이점은 다음과 같습니다.

  • ports: 호스트의 포트를 컨테이너의 포트에 바인딩(연결)합니다. 이렇게 하면 호스트 머신 및 네트워크 상의 다른 머신들이 해당 포트를 통해 컨테이너에 접근할 수 있습니다.

  • expose: 컨테이너의 포트를 내부 네트워크에만 노출합니다. 이 경우 외부에서 해당 포트에 접근할 수 없으며, 도커 네트워크 내부의 다른 컨테이너들만 접근이 가능합니다.

보안을 강화하려면 MySQL에 내부 컨테이너들끼리만 통신하도록 expose를 사용하는 것이 좋습니다. 이렇게 하면 호스트 머신이나 네트워크 상의 다른 머신들이 해당 포트를 통해 MySQL 컨테이너에 접근할 수 없기 때문입니다.

감사합니다.

김어진님의 프로필 이미지
김어진
질문자

답변 감사합니다.

외부에서 포트로 접근이 불가하다고 하셨으면 만약 스프링 내부, properties 설정 파일에 mysql 연결을 해놓고 mysql 워크벤치를 사용해서 포트 연결하는 것들을 의미하는 것인가요?

 

김어진님의 프로필 이미지
김어진

작성한 질문수

질문하기