SW/리눅스

Linux : Docker Container, Images, Volumes, Networks 제거하는 방법, 예제, 명령어

얇은생각 2021. 2. 13. 07:30
반응형

Docker는 어디서나 가상으로 실행할 수 있는 휴대용 컨테이너로 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있는 오픈 소스 컨테이너 플랫폼입니다. 

Docker로 작업할 때 사용하지 않는 많은 개체를 빠르게 누적하여 디스크 공간을 많이 사용하고 Docker 명령으로 생성된 출력을 복잡하게 만들 수 있습니다. 사용자가 명시적으로 지시하지 않는 한, 도커는 컨테이너, 이미지, 볼륨 및 네트워크와 같은 사용하지 않는 개체를 제거하지 않습니다.

이 문서는 사용되지 않는 Docker 컨테이너, 이미지, 볼륨 및 네트워크를 제거하여 Docker 사용자가 시스템을 구성하고 사용 가능한 디스크 공간을 유지하도록 돕는 "대화 시트" 역할을 합니다.

 

 

Linux : Docker Container, Images, Volumes, Networks 제거하는 방법, 예제, 명령어

 

 

사용하지 않는 모든 도커 개체 제거

도커 시스템 제거 명령은 중지된 모든 컨테이너, 매달린 이미지 및 사용되지 않는 네트워크를 제거합니다.

docker system prune

# WARNING! This will remove:
#         - all stopped containers
#         - all networks not used by at least one container
#         - all dangling images
#         - all build cache
# Are you sure you want to continue? [y/N]

 

 

-f(--force) 옵션을 사용하여 프롬프트를 무시합니다. 

사용하지 않는 모든 이미지를 매달린 이미지뿐만 아니라 제거하려면 -a(--all) 옵션을 다음 명령에 추가하십시오.

docker system prune -a

# WARNING! This will remove:
#         - all stopped containers
#         - all networks not used by at least one container
#         - all images without at least one container associated to them
#         - all build cache
# Are you sure you want to continue? [y/N]

 

 

기본적으로 명령은 중요한 데이터의 손실을 방지하기 위해 사용하지 않는 볼륨을 제거하지 않습니다. 사용하지 않는 볼륨을 모두 제거하려면 --volumes 옵션을 전달합니다.

docker system prune --volumes

# WARNING! This will remove:
#         - all stopped containers
#         - all networks not used by at least one container
#         - all volumes not used by at least one container
#         - all dangling images
#         - all build cache
# Are you sure you want to continue? [y/N] y

 

 

 

도커 컨테이너 제거

--rm 플래그를 사용하여 컨테이너를 시작하지 않는 한 도커 컨테이너를 중지할 때 도커 컨테이너가 자동으로 제거되지 않습니다.

 

 

하나 이상의 컨테이너 제거

하나 이상의 도커 컨테이너를 제거하려면 도커 컨테이너 rm 명령을 사용한 다음 제거할 컨테이너의 ID를 사용합니다.

-a 옵션을 사용하여 docker container ls 명령을 호출하면 모든 컨테이너 목록을 얻을 수 있습니다.

docker container ls -a

# CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS                      PORTS               NAMES
# cc3f2ff51cab        centos                  "/bin/bash"              2 months ago        Created                                         competent_nightingale
# cd20b396a061        solita/ubuntu-systemd   "/bin/bash -c 'exec …"   2 months ago        Exited (137) 2 months ago                       systemd
# fb62432cf3c1        ubuntu                  "/bin/bash"              3 months ago        Exited (130) 3 months ago                       jolly_mirzakhani

 

 

삭제할 컨테이너 ID를 알고 있으면 도커 컨테이너 rm 명령에 전달합니다. 예를 들어 위의 출력에 나열된 처음 두 개의 컨테이너를 제거하려면 다음을 실행합니다.

docker container rm cc3f2ff51cab cd20b396a061

 

 

아래 그림과 유사한 오류 메시지가 표시되면 컨테이너가 실행 중임을 의미합니다. 컨테이너를 제거하기 전에 중지해야 합니다.

Error response from daemon: You cannot remove a running container fc983ebf4771d42a8bd0029df061cb74dc12cb174530b2036987575b83442b47. Stop the container before attempting removal or force remove.

 

 

 

중지된 컨테이너를 모두 제거

중지된 모든 컨테이너를 제거하려면 도커 컨테이너 제거 명령을 실행합니다.

docker container prune

# WARNING! This will remove all stopped containers.
# Are you sure you want to continue? [y/N] y

 

 

도커 컨테이너 제거와 함께 제거될 실행 중이 아닌(중지된) 모든 컨테이너 목록을 가져오려면 다음 명령을 사용하십시오.

docker container ls -a --filter status=exited --filter status=created

 

 

 

필터 사용하여 컨테이너 제거

도커 컨테이너 제거 명령을 사용하면 --filter 옵션을 사용하여 특정 조건을 기준으로 컨테이너를 제거할 수 있습니다.

이 문서를 작성할 때 현재 지원되는 필터는 until 및 label입니다.  --filter 옵션을 여러 개 사용하여 둘 이상의 필터를 지정할 수 있습니다.

예를 들어 12시간 전에 생성된 모든 이미지를 제거하려면 다음을 실행합니다.

docker container prune --filter "until=12h"

 

 

 

모든 컨테이너 중지 제거

실행 중인 모든 컨테이너를 중지하려면, 도커 컨테이너 중지 명령 다음에 컨테이너 ID를 입력합니다.

docker container stop $(docker container ls -aq)

 

 

명령 도커 컨테이너 ls -aq는 모든 컨테이너 목록을 생성합니다.

모든 컨테이너가 중지되면 도커 컨테이너 rm 명령을 사용하여 해당 컨테이너를 제거한 다음 컨테이너 ID 목록을 제거합니다.

docker container rm $(docker container ls -aq)

 

 

 

도커 이미지 제거

도커 이미지를 다운로드하면 수동으로 제거할 때까지 서버에 보관됩니다.

 

 

 

하나 이상의 이미지 제거

하나 이상의 도커 이미지를 제거하려면 먼저 이미지의 ID를 찾아야 합니다.

docker image ls

# REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
# centos                  latest              75835a67d134        7 days ago          200MB
# ubuntu                  latest              2a4cca5ac898        2 months ago        111MB
# linuxize/fedora         latest              a45d6dca3361        3 months ago        311MB
# java                    8-jre               e44d62cf8862        3 months ago        311MB

 

 

제거할 이미지를 찾았으면 해당 이미지 ID를 도커 이미지 rm 명령에 전달합니다. 예를 들어 위의 출력에 나열된 처음 두 개의 영상을 제거하려면 다음을 실행합니다.

docker image rm 75835a67d134 2a4cca5ac898

 

 

아래 오류 메시지와 같은 오류 메시지가 표시되면 기존 컨테이너가 이미지를 사용한다는 의미입니다. 이미지를 제거하려면 먼저 컨테이너를 제거해야 합니다.

Error response from daemon: conflict: unable to remove repository reference "centos" (must force) - container cd20b396a061 is using its referenced image 75835a67d134

 

 

 

Dangling 이미지를 제거

Docker는 Docker 이미지 제거 명령을 제공하여 매달리고 사용하지 않는 이미지를 제거할 수 있습니다.

이미지는 태그가 지정되지 않고 컨테이너에서 사용되지 않는 이미지입니다. 이미지를 제거하려면 다음을 입력합니다.

docker image prune

# WARNING! This will remove all dangling images.
# Are you sure you want to continue? [y/N] y

 

 

이 명령을 실행할 때는 주의하십시오. 태그 없이 이미지를 만든 경우 제거됩니다.

 

 

 

사용하지 않는 모든 이미지를 제거

이미지뿐만 아니라 기존 컨테이너에서 참조되지 않는 모든 이미지를 제거하려면 -a 옵션과 함께 제거 명령을 사용합니다.

docker image prune -a

# WARNING! This will remove all images without at least one container associated to them.
# Are you sure you want to continue? [y/N] y

 

 

 

필터를 사용하여 이미지 제거

도커 이미지 제거 명령을 사용하여 --filter 옵션을 사용하여 특정 조건을 기준으로 이미지를 제거할 수도 있습니다. 

이 문서를 작성할 때 현재 지원되는 필터는 label 및 until입니다.  둘 이상의 필터를 사용할 수 있습니다.

예를 들어, 7일(168시간) 이상 전에 생성된 모든 이미지를 제거하려면 다음을 실행합니다.

docker image prune -a --filter "until=12h"

 

 

 

도커 볼륨 제거

 

 

 

하나 이상의 볼륨을 제거

하나 이상의 도커 볼륨을 제거하려면 도커 볼륨 ls 명령을 실행하여 제거할 볼륨의 ID를 찾습니다.

docker volume ls

# DRIVER              VOLUME NAME
# local               4e12af8913af888ba67243dec78419bf18adddc3c7a4b2345754b6db64293163
# local               terano

 

 

제거할 볼륨의 볼륨 이름을 찾았으면 도커 볼륨 rm 명령으로 전달합니다. 예를 들어 위의 출력에 나열된 첫 번째 볼륨을 제거하려면 다음을 실행합니다.

docker volume rm 4e12af8913af888ba67243dec78419bf18adddc3c7a4b2345754b6db64293163

 

 

아래 그림과 유사한 오류가 발생하면 기존 컨테이너가 볼륨을 사용한다는 의미입니다. 볼륨을 제거하려면 먼저 컨테이너를 제거해야 합니다.

Error response from daemon: remove 4e12af8913af888ba67243dec78419bf18adddc3c7a4b2345754b6db64293163: volume is in use - [c7188935a38a6c3f9f11297f8c98ce9996ef5ddad6e6187be62bad3001a66c8e]

 

 

 

사용하지 않는 볼륨을 모두 제거

사용하지 않는 볼륨을 모두 제거하려면 docker image frun 명령을 실행합니다.

docker volume prune

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

 

 

프롬프트를 무시하려면 -for --force 옵션을 사용합니다.

 

 

 

도커 네트워크를 제거

 

 

 

하나 이상의 네트워크를 제거

하나 이상의 도커 네트워크를 제거하려면 docker networkls 명령을 사용하여 제거할 네트워크의 ID를 찾습니다.

docker network ls

# NETWORK ID          NAME                DRIVER              SCOPE
# 107b8ac977e3        bridge              bridge              local
# ab998267377d        host                host                local
# c520032c3d31        my-bridge-network   bridge              local
# 9bc81b63f740        none                null                local

 

 

제거할 네트워크를 찾았으면 해당 네트워크 ID를 도커 네트워크 rm 명령에 전달합니다. 예를 들어 my-bridge-network라는 이름으로 네트워크를 제거하려면 다음을 실행합니다.

docker network rm c520032c3d31

 

 

아래 그림과 유사한 오류가 발생하면 기존 컨테이너가 네트워크를 사용한다는 의미입니다. 네트워크를 제거하려면 먼저 컨테이너를 제거해야 합니다.

Error response from daemon: network my-bridge-network id 6f5293268bb91ad2498b38b0bca970083af87237784017be24ea208d2233c5aa has active endpoints

 

 

 

사용하지 않는 네트워크를 모두 제거

 도커 네트워크 제거 명령을 사용하여 사용하지 않는 모든 네트워크를 제거합니다.

docker network prune

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

 

 

 

필터를 사용하여 네트워크를 제거

도커 네트워크 제거 명령을 사용하면 --filter 옵션을 사용하여 조건에 따라 네트워크를 제거할 수 있습니다.

이 문서를 작성할 때 현재 지원되는 필터는 until 및 label입니다. --filter 옵션을 여러 개 사용하여 둘 이상의 필터를 사용할 수 있습니다. 

예를 들어 12시간 전에 생성된 모든 네트워크를 제거하려면 다음을 실행합니다.

docker network prune -a --filter "until=12h"
반응형