기본 bridge 네트워크 생성
이 단계에서는 Docker 에서 기본 bridge 네트워크를 생성하는 방법을 배우겠습니다. Bridge 네트워크는 컨테이너의 기본 네트워크 유형입니다. 동일한 bridge 네트워크에 연결된 컨테이너는 서로 통신할 수 있지만, 다른 bridge 네트워크의 컨테이너 및 호스트 머신의 네트워크와는 격리됩니다.
먼저, 기존 Docker 네트워크를 나열하여 기본 네트워크를 확인해 보겠습니다.
docker network ls
bridge, host, none과 같은 몇 가지 기본 네트워크가 표시됩니다. bridge 네트워크가 우리가 작업할 네트워크입니다.
이제 새로운 bridge 네트워크를 생성해 보겠습니다. 이름을 my-bridge-network로 지정합니다.
docker network create my-bridge-network
이 명령어는 기본 설정으로 새로운 bridge 네트워크를 생성합니다. Docker 는 이 네트워크에 자동으로 서브넷과 게이트웨이를 할당합니다.
네트워크가 성공적으로 생성되었는지 확인하려면 Docker 네트워크를 다시 나열합니다.
docker network ls
이제 목록에 my-bridge-network가 표시되어야 합니다.
다음으로, 새로 생성된 네트워크를 검사하여 Docker 가 할당한 서브넷 및 게이트웨이를 포함한 세부 정보를 확인해 보겠습니다.
docker network inspect my-bridge-network
이 명령의 출력은 ID, 드라이버 ( bridge여야 함) 및 IPAM 섹션 아래의 서브넷 및 게이트웨이와 같은 네트워크에 대한 자세한 정보를 제공합니다.
이제 컨테이너를 실행하고 새 네트워크에 연결해 보겠습니다. 이 예제에서는 alpine 이미지를 사용합니다. 로컬에 alpine 이미지가 없는 경우 Docker 가 자동으로 가져옵니다.
docker run -d --name container1 --network my-bridge-network alpine sleep infinity
이 명령어는 container1이라는 컨테이너를 detached 모드 (-d) 로 실행하고, my-bridge-network에 연결 (--network my-bridge-network) 하며, sleep infinity 명령을 실행하여 계속 실행되도록 합니다.
컨테이너가 실행 중이고 올바른 네트워크에 연결되었는지 확인하려면 컨테이너를 검사할 수 있습니다.
docker inspect container1
출력에서 Networks 섹션을 찾습니다. my-bridge-network가 해당 네트워크 내에서 컨테이너에 할당된 IP 주소와 함께 나열되어야 합니다.
마지막으로, 다른 컨테이너를 실행하고 동일한 네트워크에 연결하여 컨테이너 간의 통신을 시연해 보겠습니다.
docker run -d --name container2 --network my-bridge-network alpine sleep infinity
이제 container1과 container2가 모두 my-bridge-network에 연결되었습니다. 네트워크 내에서 컨테이너 이름 또는 IP 주소를 사용하여 서로 통신할 수 있어야 합니다.
통신을 테스트하기 위해 container1 내부에서 container2를 ping 하는 명령을 실행할 수 있습니다. 먼저, ping 명령을 사용하기 위해 alpine 컨테이너에 iputils 패키지를 설치해야 합니다.
docker exec container1 apk add --no-cache iputils
docker exec container2 apk add --no-cache iputils
이제 container1에서 container2를 ping 합니다.
docker exec container1 ping -c 3 container2
성공적인 ping 응답이 표시되어 동일한 bridge 네트워크의 두 컨테이너가 통신할 수 있음을 나타냅니다.