컨테이너 간의 통신망
만약 Spring Boot 서버(컨테이너 A)가 MySQL DB(컨테이너 B)에 접속해야 한다면 어떻게 해야 할까요? localhost를 쓰면 안 됩니다! 각 컨테이너는 독립된 환경이므로 컨테이너 A의 localhost는 자기 자신을 의미하기 때문입니다.
따라서 두 컨테이너를 같은 도커 네트워크(Docker Network)에 묶어주고, IP 대신 '컨테이너 이름'을 도메인 주소처럼 사용해야 합니다 (도커 내장 DNS).
# 1. 사용자 정의 브릿지 네트워크 생성
docker network create my-net
# 2. 데이터베이스 컨테이너를 my-net에 연결하여 실행
docker run -d --name my-db --network my-net -e MYSQL_ROOT_PASSWORD=1234 mysql:8.0
# 3. 우분투 컨테이너를 띄워서 my-db 로 통신(ping)이 되는지 테스트!
# --rm 옵션은 실행이 끝나면 컨테이너를 자동 삭제합니다.
docker run -it --rm --network my-net ubuntu /bin/bash
# (우분투 컨테이너 내부 접속 후)
# apt update && apt install -y ping
# ping my-db
# -> my-db의 IP 주소를 알아서 찾아서 응답(reply)이 옵니다!