네트워크와 Compose로 컨테이너 연결하기
Docker에서는 컨테이너 간 통신을 위해 네트워크를 구성합니다.
특히 사용자 정의 브리지 네트워크를 활용하면 컨테이너 이름으로 통신이 가능하고,
Docker Compose를 사용하면 여러 컨테이너 서비스를 효율적으로 관리할 수 있습니다.
도커 네트워크
- my-network라는 사용자 정의 브리지 네트워크를 생성합니다.
- docker network ls 명령어로 네트워크 목록을 확인할 수 있습니다.
- 사용자 정의 네트워크는 컨테이너 이름 기반 통신을 지원합니다.
컨테이너 간 통신
container-b에서 container-a로 이름 기반 ping 테스트를 수행합니다.
- container-a, container-b를 동일 네트워크(my-network)에 연결해 실행합니다.
- ping container-a가 성공하면 컨테이너 간 통신이 가능한 것입니다.
- apt install로 ping 명령어가 포함된 iputils-ping 패키지를 설치해야 합니다.
통신 가능 조건
- 두 컨테이너가 동일한 사용자 정의 네트워크에 있어야 함
- 컨테이너 이름이 도메인처럼 인식되어 통신 가능 (ping container-a)
Docker Compose
docker-compose.yml
- Nginx 서버(web)와 Ubuntu 클라이언트(client)를 동시에 실행합니다.
docker compose up으로 컨테이너 실행
- -d: 백그라운드 실행
- docker-compose.yml에 정의된 서비스(web, client)가 하나의 네트워크로 묶여 한 번에 실행
컨테이너 간 통신
- 같은 네트워크에 속해 있기 때문에 컨테이너 이름으로 통신 가능
docker exec -it web-client bash
apt update && apt install -y iputils-ping
ping web-server
- web-client에서 web-server를 핑으로 호출 가능 → DNS 이름처럼 동작
외부 접속 설정
- http://localhost:8088으로 브라우저에서 접근 가능
- ports로 호스트와 컨테이너 간 포트 연결을 설정해야 외부 접속 가능
docker compose down으로 종료 및 정리
- 실행 중이던 모든 서비스 중단
- 자동으로 만든 네트워크 및 컨테이너도 제거
1. docker-compose.yml 작성
↓
2. docker compose up -d → 컨테이너들 실행 & 네트워크 연결
↓
3. 컨테이너 내부에서 이름 기반 통신 가능 (ex. ping web-server)
↓
4. ports 설정하면 외부에서도 접근 가능
↓
5. docker compose down → 종료 및 정리
'Docker' 카테고리의 다른 글
Docker - 데이터 관리(Volume, Bind Mount) (1) | 2025.06.18 |
---|---|
Docker - RUN, CMD, ENTRYPOINT, EXPOSE 명령어 차이 (0) | 2025.06.17 |
Docker - 애플리케이션과 Apache 서버 이미지 만들기 (0) | 2025.06.17 |
Docker -i, -t, -d 옵션 (2) | 2025.06.16 |
Docker - Dockerfile을 이용한 도커이미지 빌드 (0) | 2025.06.16 |
Docker - 설치 & 컨테이너 실행 (0) | 2025.06.16 |