docker network prune 명령어를 사용하여 사용하지 않는 네트워크 제거 방법

DockerBeginner
지금 연습하기

소개

이 랩에서는 docker network prune 명령을 사용하여 Docker 네트워크를 효과적으로 관리하는 방법을 배우게 됩니다. 여러 네트워크를 사용하는 실제 시나리오를 시뮬레이션하기 위해 여러 사용자 지정 네트워크를 생성하는 것으로 시작합니다.

이러한 네트워크를 생성한 후, 현재 사용되지 않는 네트워크를 나열하고 식별하는 방법을 배우게 됩니다. 마지막으로, 보다 타겟팅된 정리 (pruning) 를 위해 필터를 적용하는 방법을 포함하여, 이러한 사용되지 않는 네트워크를 제거하기 위해 docker network prune 명령을 사용하는 연습을 할 것입니다. 이 실습 경험을 통해 Docker 환경을 깨끗하고 최적화된 상태로 유지하는 기술을 습득할 수 있습니다.

사용자 지정 네트워크 생성

이 단계에서는 Docker 에서 사용자 지정 네트워크를 생성하는 방법을 배우겠습니다. 기본적으로 Docker 는 bridge, host, none의 세 가지 네트워크를 제공합니다. 하지만 컨테이너를 격리하고 서로 통신하는 방식을 제어하기 위해 자체 사용자 지정 네트워크를 생성할 수 있습니다.

사용자 지정 네트워크를 생성하려면 docker network create 명령을 사용합니다. my-network-1이라는 이름의 브리지 네트워크를 생성해 보겠습니다.

docker network create my-network-1

네트워크가 성공적으로 생성되었음을 나타내는 다음과 유사한 출력을 볼 수 있습니다.

<network_id>

이제 my-network-2라는 이름의 다른 브리지 네트워크를 생성해 보겠습니다.

docker network create my-network-2

다시, 네트워크 ID 가 출력으로 표시됩니다.

docker network ls 명령을 사용하여 사용 가능한 모든 네트워크를 나열하여 네트워크가 생성되었는지 확인할 수 있습니다.

docker network ls

출력에는 기본 네트워크와 방금 생성한 두 개의 사용자 지정 네트워크 (my-network-1my-network-2) 를 포함한 네트워크 목록이 표시됩니다.

사용하지 않는 네트워크 식별을 위한 네트워크 목록 확인

이 단계에서는 Docker 네트워크를 나열하고 현재 컨테이너에서 사용하지 않는 네트워크를 식별하는 방법을 배우겠습니다. 이는 Docker 환경을 정리하고 리소스를 확보하는 데 유용합니다.

이전 단계에서 docker network ls 명령을 사용하여 모든 네트워크를 나열했습니다. 현재 상태를 확인하기 위해 다시 실행해 보겠습니다.

docker network ls

출력에는 각 네트워크의 네트워크 ID, 이름, 드라이버 및 범위가 표시됩니다. 생성한 my-network-1my-network-2 네트워크가 나열되어 있는지 확인하십시오.

사용하지 않는 네트워크를 식별하기 위해 --dry-run 플래그와 함께 docker network prune 명령을 사용할 수 있습니다. 이 플래그를 사용하면 실제로 제거하지 않고 어떤 네트워크가 제거될지 확인할 수 있습니다.

docker network prune --dry-run

이 명령의 출력은 실행 중인 컨테이너에 연결되지 않은 네트워크를 나열하고 정리됩니다. my-network-1 또는 my-network-2에 컨테이너를 연결하지 않았으므로 드라이 런의 출력에 표시되어야 합니다.

docker network prune --dry-run의 출력에 어떤 영향을 미치는지 확인하기 위해 my-network-1에 연결된 간단한 컨테이너를 실행해 보겠습니다. 매우 작은 hello-world 이미지를 사용합니다. 먼저 이미지를 가져옵니다.

docker pull hello-world

이제 이 이미지를 사용하여 컨테이너를 실행하고 my-network-1에 연결합니다. -d 플래그는 컨테이너를 분리 모드 (백그라운드) 에서 실행합니다.

docker run -d --network my-network-1 hello-world

컨테이너 ID 가 출력으로 표시됩니다.

이제 docker network prune --dry-run 명령을 다시 실행해 보겠습니다.

docker network prune --dry-run

이번에는 my-network-1이 실행 중인 hello-world 컨테이너에서 사용되고 있으므로 정리할 네트워크 목록에 나타나지 않아야 합니다. 사용되지 않는 my-network-2는 여전히 나열되어야 합니다.

hello-world 컨테이너를 중지하고 제거하려면 먼저 docker ps를 사용하여 ID 를 찾습니다.

docker ps

그런 다음 docker stop <container_id>를 사용하여 컨테이너를 중지하고 docker rm <container_id>를 사용하여 제거합니다. <container_id>docker ps 출력의 실제 ID 로 바꿉니다.

docker stop <container_id>
docker rm <container_id>

이제 docker network prune --dry-run을 다시 실행하면 my-network-1my-network-2가 더 이상 사용되지 않으므로 정리할 네트워크로 나열되어야 합니다.

사용하지 않는 모든 네트워크 정리 (Prune)

이 단계에서는 docker network prune 명령을 사용하여 사용하지 않는 모든 네트워크를 제거하는 방법을 배우겠습니다. 이 명령은 현재 컨테이너에 연결되지 않은 네트워크를 제거하여 Docker 환경을 정리하고 리소스를 확보하는 데 유용합니다.

정리하기 전에 현재 어떤 네트워크가 있는지 다시 나열해 보겠습니다.

docker network ls

기본 네트워크 (bridge, host, none) 와 첫 번째 단계에서 생성한 사용자 지정 네트워크 (my-network-1my-network-2) 를 볼 수 있습니다. 이전 단계에서 hello-world 컨테이너를 중지하고 제거했으므로 my-network-1my-network-2는 이제 사용되지 않아야 합니다.

사용하지 않는 모든 네트워크를 정리하려면 플래그 없이 docker network prune 명령을 실행하기만 하면 됩니다. Docker 는 작업 확인을 요청합니다.

docker network prune

다음과 같은 확인 메시지가 표시됩니다.

WARNING! This will remove all custom networks not used by at least one container.
Are you sure you want to continue? [y/N]

y를 입력하고 Enter 키를 눌러 정리를 진행합니다.

출력에는 제거된 네트워크와 회수된 총 공간의 양이 나열됩니다.

이제 my-network-1my-network-2가 제거되었는지 확인하기 위해 네트워크를 다시 나열해 보겠습니다.

docker network ls

이제 목록에서 기본 네트워크 (bridge, host, none) 만 볼 수 있습니다.

필터를 사용하여 사용하지 않는 네트워크 정리 (Prune)

이 단계에서는 필터를 사용하여 사용하지 않는 네트워크를 정리하는 방법을 배우겠습니다. 필터를 사용하면 레이블 또는 생성 시간과 같은 특정 기준에 따라 네트워크를 선택적으로 제거할 수 있습니다.

먼저 필터링을 시연하기 위해 레이블이 있는 몇 개의 새 네트워크를 생성해 보겠습니다. env=dev 레이블이 있는 network-aenv=test 레이블이 있는 network-b를 생성합니다.

docker network create --label env=dev network-a
docker network create --label env=test network-b

두 명령 모두에 대한 네트워크 ID 가 출력으로 표시됩니다.

이제 네트워크를 나열하여 새로 생성된 네트워크와 해당 레이블을 확인해 보겠습니다.

docker network ls

목록에 network-anetwork-b가 표시됩니다.

필터를 기반으로 네트워크를 정리하려면 docker network prune 명령과 함께 --filter 플래그를 사용합니다. 예를 들어, env=dev 레이블이 있는 모든 사용하지 않는 네트워크를 정리하려면 label=env=dev 필터를 사용할 수 있습니다.

먼저 드라이 런을 수행하여 이 필터로 정리될 네트워크를 확인해 보겠습니다.

docker network prune --filter label=env=dev --dry-run

출력에는 env=dev 레이블이 있고 현재 사용되지 않으므로 network-a가 정리될 네트워크로 표시되어야 합니다.

이제 env=dev 레이블이 있는 사용하지 않는 네트워크를 실제로 정리해 보겠습니다.

docker network prune --filter label=env=dev

확인 메시지가 표시됩니다. y를 입력하고 Enter 키를 누릅니다.

출력에는 network-a가 제거되었음이 표시됩니다.

network-a가 사라졌지만 network-b(env=test 레이블 포함) 는 여전히 있는지 확인하기 위해 네트워크를 다시 나열해 보겠습니다.

docker network ls

목록에 network-b가 표시되지만 network-a는 표시되지 않아야 합니다.

특정 시간 이전에 생성된 네트워크와 같은 다른 기준을 기반으로 필터링할 수도 있습니다. 그러나 레이블별 필터링은 네트워크를 관리하는 일반적이고 유용한 방법입니다.

요약

이 Lab 에서는 Docker 네트워크를 관리하는 방법을 배웠으며, 특히 사용하지 않는 네트워크를 식별하고 제거하는 데 중점을 두었습니다. docker network create 명령을 사용하여 사용자 지정 브리지 네트워크를 생성하는 것으로 시작하여 기본 네트워크 외에 새로운 네트워크를 추가하는 방법을 시연했습니다. 그런 다음 docker network ls 명령을 사용하여 사용 가능한 모든 네트워크를 나열하고 사용자 지정 네트워크의 생성을 확인했습니다.

이어서 사용하지 않는 네트워크를 식별하는 방법을 살펴보았습니다. docker network prune 명령, 특히 --dry-run 플래그와 함께 사용하면 어떤 네트워크가 컨테이너에 연결되지 않아 제거 대상이 되는지 미리 볼 수 있는 유용한 도구임을 알게 되었습니다. 이 단계는 실제로 네트워크를 삭제하기 전에 정리의 영향을 이해하는 데 중요합니다.