도커 컨테이너 연결 및 사용자 정의 네트워크 구성

1. 컨테이너 생성과 링크 설정

docker run -d -it --name container_a busybox /bin/sh -c "while true;do sleep 3600;done"
docker run -d -it --name container_b --link container_a busybox /bin/sh -c "while true;do sleep 3600;done"

2. 컨테이너 IP 주소 확인

docker exec -it container_a ip a | grep 172
docker exec -it container_b ip a | grep 172

3. 컨테이너 간 통신 테스트

# container_a에서 테스트
docker exec -it container_a ping -c 1 172.17.0.3  # 성공
docker exec -it container_a ping -c 1 container_b  # 실패

# container_b에서 테스트
docker exec -it container_b ping -c 1 172.17.0.2  # 성공
docker exec -it container_b ping -c 1 container_a  # 성공

4. 링크된 컨테이너 제거 후 영향 확인

docker rm -f container_a
docker exec -it container_b ping container_a  # 오류 발생

5. 도커 네트워크 목록 확인

docker network ls  # 기본 브리지 네트워크 확인

6. 사용자 정의 브리지 네트워크 생성

docker network create -d bridge custom_net

7. 네트워크 생성 확인

docker network ls
brctl show  # 네트워크 인터페이스 확인

8. 사용자 정의 네트워크에 컨테이너 연결

docker run -d -it --name container_c --network custom_net busybox /bin/sh -c "while true;do sleep 3600;done"

9. 네트워크 구성 검증

docker network inspect custom_net  # 컨테이너 및 IP 정보 확인

10. 기존 컨테이너를 사용자 정의 네트워크에 추가

docker network connect custom_net container_b
docker network inspect custom_net  # 다중 컨테이너 연결 확인

11. 네트워크 간 통신 테스트

# container_a(기본 브리지)에서:
docker exec -it container_a ping container_b  # 실패

# container_b(이중 네트워크)에서:
docker exec -it container_b ping container_c  # 성공

# container_c(사용자 정의 네트워크)에서:
docker exec -it container_c ping container_b  # 성공

12. 추가 컨테이너 생성

docker run -d -it --name container_d --network custom_net busybox /bin/sh -c "while true;do sleep 3600;done"

13. 최종 통신 테스트

docker exec -it container_d ping container_b  # 성공
docker exec -it container_d ping container_c  # 성공

실험 결과 요약

1. 컨테이너는 기본적으로 bridge 네트워크 사용
2. --link 설정 시 대상 컨테이너의 이름 해석만 단방향으로 가능
3. 링크된 컨테이너 제거 시 의존성 문제 발생
4. 사용자 정의 네트워크 내에서는 모든 컨테이너가 이름 기반 통신 가능

태그: docker 컨테이너-링크 사용자-정의-네트워크 브리지-네트워크 도커-네트워킹

6월 20일 17:14에 게시됨