실행 중인 컨테이너를 네트워크에 연결
이 단계에서는 실행 중인 Docker 컨테이너를 기존 네트워크에 연결하는 방법을 배우게 됩니다. 이는 이미 실행 중인 컨테이너가 있고 특정 네트워크의 다른 컨테이너 또는 서비스와 통신해야 할 때 유용합니다.
먼저, 이 데모에 사용할 새 네트워크를 생성해 보겠습니다. my-network라는 이름의 브리지 네트워크를 생성합니다.
docker network create my-network
네트워크가 성공적으로 생성되었음을 나타내는 다음과 유사한 출력을 볼 수 있습니다.
<network_id>
이제, 처음에는 my-network에 연결되지 않은 간단한 컨테이너를 실행해 보겠습니다. detached 모드 (-d) 로 alpine 컨테이너를 실행하고 이름을 my-container로 지정합니다.
docker run -d --name my-container alpine sleep infinity
출력은 컨테이너 ID 가 됩니다.
<container_id>
컨테이너가 실행 중이고 my-network에 연결되지 않았는지 확인하려면 컨테이너의 네트워크 설정을 검사할 수 있습니다.
docker inspect my-container --format '{{json .NetworkSettings.Networks}}'
출력은 기본 브리지 네트워크를 표시하지만 my-network는 표시하지 않습니다.
{
"bridge": {
"IPAMData": null,
"IPAddress": "<ip_address>",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "<mac_address>",
"DriverOpts": null
}
}
이제 docker network connect 명령어를 사용하여 실행 중인 my-container를 my-network에 연결해 보겠습니다.
docker network connect my-network my-container
명령이 성공하면 출력이 없습니다.
컨테이너가 이제 my-network에 연결되었는지 확인하려면 컨테이너의 네트워크 설정을 다시 검사합니다.
docker inspect my-container --format '{{json .NetworkSettings.Networks}}'
이번에는 출력에 기본 브리지 네트워크와 my-network가 모두 표시되어야 합니다.
{
"bridge": {
"IPAMData": null,
"IPAddress": "<ip_address>",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "<mac_address>",
"DriverOpts": null
},
"my-network": {
"IPAMData": null,
"IPAddress": "<ip_address>",
"IPPrefixLen": 24,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "<mac_address>",
"DriverOpts": null
}
}
마지막으로, 생성한 컨테이너와 네트워크를 정리해 보겠습니다.
docker stop my-container
docker rm my-container
docker network rm my-network