-
[Docker] 원격에서 다른 원격의 외부 엔드포인트 호출 안됨🩸 삽질의 추억/로컬에선 되는데 원격에서 안됨; 2024. 10. 2. 17:57728x90
상황:
원격 VM A, B 가 있다.
A에 도커로 띄운 Spring Boot a1 이 B 서버의 엔드포인트로 API를 호출해야 함.
Docker 컨테이너로 실행시킨 스프링 부트는 잘 돌아가나 A ->B 호출만 안되는 상황
스프링 컨테이너를 실행한 명령어
docker run -d \ --name my-backend \ -p 8080:8080 \ my-backend
해결 방법:
다음과 같이 `--network host` 옵션을 추가한다.
docker run -d \ --name my-backend \ -p 8080:8080 \ --network host \ my-backend
혹은 방화벽이나 보안 그룹 설정의 문제일 수도 있다.
만약 호스트의 방화벽 설정이 docker0 인터페이스를 통한 통신을 제한하고 있다면 외부 통신에 문제를 일으킬 수 있다.
그런 경우에는 아래의 블로그를 참고해보자.
나는 회사 서버 방화벽 괜히 건드리기 무서워서 안했다..^^
이전 사람들이 안한 이유가 있지 않을까며 ^^..
그게 뭔데
호스트 네트워크를 사용하면 마치 호스트 내에서 애플리케이션을 실행한 것과 같아져 별도의 포드포워딩 없이 호스트의 네트워크를 사용하게 된다.
(같은말 반복) 네트워크를 호스트 모드로 실행하면 새로운 내부 IP를 할당받을 필요 없이 곧바로 localhost를 통해 접속할 수 있게 된다.
호스트 네트워크를 직접 사용하기에 NAT(Network Address Translation) 과정이 필요 없어진다.
=> 그리고 어쩐지 docker ps를 했을 때 `0.0.0.0:8080 => 8080` 같은 표시도 사라진다!
하지만 외부로부터 공격 접근이 온다면 호스트의 네트워크까지 직접적으로 공격당할 수 있으므로 주의해야 한다.
더 궁금한건 docker network host/bridge 키워드로 검색하길
끝!
728x90'🩸 삽질의 추억 > 로컬에선 되는데 원격에서 안됨;' 카테고리의 다른 글
[Vite, Docker] 로컬에선 되는데 원격에서는 ERR_CONNECTION_REFUSED (4) 2024.09.30 [Docker, MongoDB] 도커에 올렸더니 Authentication failed (0) 2024.04.14 [Docker] 배포 후 “사이트에 연결할 수 없음” (0) 2024.04.14