작성
·
339
1
안녕하세요, 좋은 강의 감사합니다.
docker-compose에서 mysql설정할 때, ports를 사용해서 연결했습니다. (ubuntu 20.04)
port는 호스트 내부의 컨테이너끼리는 컨테이너 포트로 특정 컨테이너에 접근할 수 있고,
호스트 외부에서는 컨테이너 포트와 바인딩된(연결된) 호스트 포트를 통해 특정 컨테이너에 접근할 수 있다고 이해하고 있는데 보안을 위해서 port보단 expose를 사용해서 mysql에 내부 컨테이너들끼리 통신하도록 하는 것이 나을 지 궁금하여 질문을 남기게 되었습니다.
호스트: ubuntu 20.04, 내부 컨테이너: docker-compose에서 service 컨테이너들
답변 1
1
안녕하세요. 답변도우미입니다. 기본적으로는 서비스의 구성이 어떻게 되느냐에 따라, 다르겠지만요. 일반적으로는 expose
를 사용하는 것이 보안 측면에서 더 좋은 선택입니다. ports
와 expose
사이의 주요 차이점은 다음과 같습니다.
ports
: 호스트의 포트를 컨테이너의 포트에 바인딩(연결)합니다. 이렇게 하면 호스트 머신 및 네트워크 상의 다른 머신들이 해당 포트를 통해 컨테이너에 접근할 수 있습니다.
expose
: 컨테이너의 포트를 내부 네트워크에만 노출합니다. 이 경우 외부에서 해당 포트에 접근할 수 없으며, 도커 네트워크 내부의 다른 컨테이너들만 접근이 가능합니다.
보안을 강화하려면 MySQL에 내부 컨테이너들끼리만 통신하도록 expose
를 사용하는 것이 좋습니다. 이렇게 하면 호스트 머신이나 네트워크 상의 다른 머신들이 해당 포트를 통해 MySQL 컨테이너에 접근할 수 없기 때문입니다.
감사합니다.
답변 감사합니다.
외부에서 포트로 접근이 불가하다고 하셨으면 만약 스프링 내부, properties 설정 파일에 mysql 연결을 해놓고 mysql 워크벤치를 사용해서 포트 연결하는 것들을 의미하는 것인가요?