Docker를 장기간 운영하다 보면 프로젝트를 생성하고 삭제하는 과정에서 수많은 Docker Network가 남게 됩니다. 컨테이너는 삭제했지만 사용자 정의 네트워크(User-defined Network)는 그대로 남아 있는 경우가 많으며, 이러한 네트워크가 계속 쌓이면 현재 어떤 Network가 실제 사용 중인지 관리하기 어려워집니다.
특히 개발 서버나 CI/CD 서버에서는 테스트 환경을 반복적으로 생성하고 삭제하기 때문에 사용하지 않는 Docker Network가 빠르게 증가합니다. 이러한 네트워크를 하나씩 삭제하는 것은 번거롭고 실수할 가능성도 높습니다.
이럴 때 사용하는 명령어가 바로 docker network prune입니다.
Docker Network Prune은 현재 어떤 컨테이너에서도 사용하지 않는 Docker Network를 한 번에 삭제하는 명령어입니다. 불필요한 네트워크를 자동으로 정리하여 Docker 환경을 깔끔하게 유지할 수 있으며, 유지보수 작업에서도 자주 사용됩니다.
이번 글에서는 Docker Network Prune의 개념부터 기본 사용법, 삭제 대상, 주요 옵션, 실무 활용 방법까지 자세히 알아보겠습니다.
Docker Network Prune이란 무엇인가?
Docker Network Prune은 사용하지 않는 Docker Network를 한 번에 삭제하는 관리 명령어입니다.
현재 어떤 컨테이너와도 연결되어 있지 않은 사용자 정의 Network만 삭제하며, Docker가 사용하는 기본 Network는 삭제하지 않습니다.
개발 환경과 운영 환경 모두에서 Docker 리소스를 정리할 때 매우 유용한 명령어입니다.
Docker Network Prune은 언제 사용하는가?
다음과 같은 상황에서 자주 사용합니다.
- 테스트 Network 정리
- 프로젝트 종료 후 Network 제거
- 사용하지 않는 Docker Network 삭제
- 개발 서버 유지보수
- CI/CD 서버 정리
- Docker 환경 최적화
특히 반복적으로 테스트를 수행하는 개발 환경에서 매우 자주 사용됩니다.
Docker Network Prune 기본 사용법
가장 기본적인 사용 방법입니다.
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를 입력하면 됩니다.
삭제가 완료되면 다음과 같이 출력됩니다.
Deleted Networks:
test_network
old_backend
temp_network
Total reclaimed space: 0B
삭제된 Docker Network 목록을 확인할 수 있습니다.
확인 메시지 없이 삭제하기
자동화 스크립트에서는 확인 메시지를 생략하는 경우가 많습니다.
docker network prune -f
-f 또는 --force 옵션을 사용하면 즉시 삭제가 진행됩니다.
CI/CD 환경에서도 많이 사용하는 방식입니다.
삭제 대상은 무엇인가?
Docker Network Prune은 모든 Network를 삭제하지 않습니다.
삭제 대상은 다음과 같습니다.
- 사용하지 않는 사용자 정의 Bridge Network
- 컨테이너와 연결되지 않은 Network
- 오래된 테스트 Network
- 프로젝트 종료 후 남아 있는 Network
반대로 다음 Network는 삭제되지 않습니다.
- bridge
- host
- none
- 현재 컨테이너가 사용하는 Network
즉, Docker 운영에 필요한 기본 네트워크와 사용 중인 네트워크는 안전하게 유지됩니다.
Docker Network Prune 실무 활용 예제
Docker Network Prune은 개발 환경과 CI/CD 환경에서 사용하지 않는 Docker Network를 정리할 때 가장 많이 사용하는 명령어입니다. 오래된 테스트 네트워크를 한 번에 삭제하여 Docker 환경을 깔끔하게 유지할 수 있습니다.
사용하지 않는 Network 모두 삭제하기
가장 기본적인 사용 방법입니다.
docker network prune
현재 어떤 컨테이너에서도 사용하지 않는 사용자 정의 Network를 모두 삭제합니다.
확인 메시지 없이 즉시 삭제하기
자동화 환경에서는 -f 옵션을 함께 사용하는 경우가 많습니다.
docker network prune -f
사용자의 확인 없이 즉시 삭제가 진행됩니다.
삭제 전 Network 목록 확인하기
삭제 전에 현재 생성된 Docker Network를 확인합니다.
docker network ls
현재 어떤 네트워크가 존재하는지 확인한 후 삭제를 진행하면 안전합니다.
연결된 컨테이너 확인하기
삭제 대상 Network가 사용 중인지 확인합니다.
docker network inspect backend_network
Containers 항목에 아무것도 없다면 삭제 대상이 될 가능성이 높습니다.
Docker 전체 리소스와 함께 확인하기
Docker 리소스를 함께 점검하면 더욱 효율적으로 관리할 수 있습니다.
docker system df
Network뿐 아니라 Image, Container, Volume 사용 현황도 함께 확인할 수 있습니다.
유지보수 스크립트에서 사용하기
정기적인 유지보수 작업에서는 다음과 같이 사용하는 경우가 많습니다.
docker network prune -f
docker volume prune -f
docker image prune -f
사용하지 않는 Docker 리소스를 한 번에 정리할 수 있습니다.
Linux 서버 문제 해결
CI/CD 서버를 오랫동안 운영한 결과 수백 개의 테스트용 Docker Network가 생성되어 관리가 어려워졌습니다.
관리자는 현재 Docker Network 목록을 확인했습니다.
docker network ls
프로젝트가 종료된 Network가 다수 남아 있는 것을 확인했습니다.
현재 사용 중인 Network가 있는지도 함께 확인했습니다.
docker network inspect test_network
컨테이너가 연결되어 있지 않은 것을 확인한 후 다음 명령을 실행했습니다.
docker network prune -f
정리 후 다시 목록을 확인했습니다.
docker network ls
사용하지 않는 Network가 모두 삭제되었고 실제 운영 중인 Network만 남아 관리가 훨씬 쉬워졌습니다.
개발 서버에서는 이러한 작업을 주기적으로 수행하면 Docker 환경을 항상 깔끔하게 유지할 수 있습니다.
Docker Network Prune 사용 시 주의사항
Docker Network Prune을 사용할 때는 다음 사항을 반드시 확인해야 합니다.
첫 번째는 현재 컨테이너가 사용 중인 Network는 삭제되지 않는다는 점입니다.
Docker가 자동으로 보호하므로 운영 중인 서비스에는 영향을 주지 않습니다.
두 번째는 앞으로 사용할 예정인 Network라도 현재 어떤 컨테이너와도 연결되어 있지 않다면 삭제될 수 있습니다.
필요한 Network라면 삭제 전에 컨테이너 연결 여부를 확인하는 것이 좋습니다.
세 번째는 기본 Docker Network인 bridge, host, none은 삭제 대상이 아닙니다.
네 번째는 자동화 스크립트에서 -f 옵션을 사용할 경우 예상하지 못한 Network가 삭제되지 않도록 충분히 검토해야 합니다.
Best Practice
Docker Network Prune을 사용할 때는 다음과 같은 방법을 추천합니다.
- 삭제 전
docker network ls로 목록을 확인합니다. docker network inspect로 연결 상태를 점검합니다.- 프로젝트 종료 후 즉시 Network를 정리합니다.
- 개발 서버에서는 정기적으로 실행합니다.
- CI/CD 환경에서는 자동 유지보수 작업에 포함합니다.
- 운영 서버에서는 유지보수 시간에 실행합니다.
이러한 방법을 적용하면 Docker Network를 효율적으로 관리하고 불필요한 리소스를 줄일 수 있습니다.
자주 묻는 질문
Docker Network Prune은 모든 Network를 삭제하나요?
아니요.
현재 사용하지 않는 사용자 정의 Network만 삭제하며 기본 Network와 사용 중인 Network는 삭제되지 않습니다.
기본 Network도 삭제되나요?
아닙니다.
bridge, host, none은 Docker가 관리하는 기본 Network이므로 삭제되지 않습니다.
실행 중인 서비스에 영향이 있나요?
현재 컨테이너가 연결된 Network는 삭제되지 않으므로 일반적으로 서비스에는 영향을 주지 않습니다.
docker network rm과 차이점은 무엇인가요?
docker network rm은 특정 Network를 삭제하는 명령이고, docker network prune은 사용하지 않는 Network를 한 번에 삭제하는 명령입니다.
마무리
Docker Network Prune은 사용하지 않는 Docker Network를 한 번에 정리하는 매우 유용한 관리 명령어입니다.
특히 개발 환경과 CI/CD 서버에서는 테스트 과정에서 많은 사용자 정의 Network가 생성되므로 정기적으로 실행하면 Docker 환경을 깔끔하게 유지할 수 있습니다.
다만 앞으로 사용할 예정인 Network라도 현재 연결된 컨테이너가 없다면 삭제 대상이 될 수 있으므로 실행 전에 docker network ls와 docker network inspect를 통해 상태를 확인하는 습관을 가지는 것이 안전한 Docker 운영의 핵심입니다.