도커가 사용 중이지만 도커 컨테이너가 없습니다.
EDIT (2/19/21): 제가 몇 년 전에 이 독창적인 질문을 한 이후로 많은 시간이 흘렀고 그 이후로 저는 많은 활동을 해왔습니다.저는 이 문제를 해결하기 위한 가장 현지화되고 안전한 옵션(일반적으로 도커 구성과 관련됨)과 일치한다고 생각하는 답변을 다시 선택했습니다.도커가 소개한 동안prune
다른 치 않게 수 하겠습니다. 일반적으로 위험한 작업이며 기계에 있는 다른 응용 프로그램이나 설정에 의도치 않게 영향을 미칠 수 있으므로 사용에 대해 주의하겠습니다.
도커 1.9.1에서 도커 볼륨을 제거하는 데 문제가 있었습니다.
멈춰있던 내 컨테이너들을 모두 제거해서,docker ps -a
빈 값을 반환합니다.
를 할 때docker volume ls
나는 도커 컨테이너의 전체 호스트를 받았습니다.
docker volume ls
DRIVER VOLUME NAME
local a94211ea91d66142886d72ec476ece477bb5d2e7e52a5d73b2f2f98f6efa6e66
local 4f673316d690ca2d41abbdc9bf980c7a3f8d67242d76562bbd44079f5f438317
local eb6ab93effc4b90a2162e6fab6eeeb65bd0e4bd8a9290e1bad503d2a47aa8a78
local 91acb0f7644aec16d23a70f63f70027899017a884dab1f33ac8c4cf0dabe5f2c
local 4932e2fbad8f7e6246af96208d45a266eae11329f1adf176955f80ca2e874f69
local 68fd38fc78a8f02364a94934e9dd3b5d10e51de5b2546e7497eb21d6a1e7b750
local 7043a9642614dd6e9ca013cdf662451d2b3df6b1dddff97211a65ccf9f4c6d47
#etc x 50
중요한 을 담고 있는 책이 에 저는 이볼중중볼포있않때지합모다니제볼고로 모든 .docker volume rm $(docker volume ls -q)
.
그 과정에서 대다수가 제거되지만, 저는 다음과 같은 결과를 얻습니다.
Error response from daemon: Conflict: volume is in use
Error response from daemon: Conflict: volume is in use
Error response from daemon: Conflict: volume is in use
Error response from daemon: Conflict: volume is in use
Error response from daemon: Conflict: volume is in use
그들 중 상당한 부분을 위해.애초에 컨테이너가 존재하지 않는 경우 이러한 볼륨은 어떻게 사용되고 있습니까?
볼륨이 다음을 통해 생성되었을 수 있습니다.docker-compose
그렇다면 다음 방법으로 제거해야 합니다.
docker-compose down --volumes
닐스 벡 닐슨에게 경의를 표합니다!
다음 기능을 사용하여 Docker와 관련된 모든 항목을 잔인하게 제거할 수 있습니다.
removecontainers() {
docker stop $(docker ps -aq)
docker rm $(docker ps -aq)
}
armageddon() {
removecontainers
docker network prune -f
docker rmi -f $(docker images --filter dangling=true -qa)
docker volume rm $(docker volume ls --filter dangling=true -q)
docker rmi -f $(docker images -qa)
}
이러한 항목을 에 추가할 수 있습니다.~/Xrc
의 셸인터프리터입니다(파, 는여서 X리셸터인프터일기(터)입니다.~/.bashrc
bash)를 합니다.source ~/Xrc
또한 콘솔에 복사하여 붙여넣은 다음과 같이 실행할 수 있습니다(기능을 준비하기 위해 이전에 선택한 옵션에 관계없이).
armageddon
일반 도커 청소에도 유용합니다.이렇게 하면 용기(실행 중인지 여부)와 모든 종류의 볼륨뿐만 아니라 이미지도 제거됩니다.
중지된 컨테이너 중 하나에서 볼륨을 사용할 수 있습니다.다음 명령을 사용하여 이러한 컨테이너를 제거할 수 있습니다.
docker container prune
사용하지 않는 볼륨을 제거할 수 있습니다.
docker volume prune
저는 도커가 꽤 생소합니다.초기 테스트의 엉망진창 상태를 정리하다가 볼륨도 제거할 수 없었습니다.실행 중인 인스턴스를 모두 중지하고 다음 작업을 수행했습니다.docker rmi -f $(docker image ls -q)
하지만 여전히 받았습니다.Error response from daemon: unable to remove volume: remove uuid: volume is in use
.
나는 했습니다.docker system prune
마지막 볼륨을 제거하는 데 필요한 작업을 정리했습니다.
[0]$ 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] y
Deleted Containers:
... about 15 containers UUID's truncated
Total reclaimed space: 2.273MB
[0]$ docker volume ls
DRIVER VOLUME NAME
local uuid
[0]$ docker volume rm uuid
uuid
[0]$
이 명령을 사용하려면 클라이언트 및 데몬 API가 모두 1.25 이상이어야 합니다.사용
docker version
클라이언트에서 클라이언트 및 데몬 API 버전을 확인하는 명령을 실행합니다.
볼륨이 컨테이너와 연결되어 있는 한(실행 중이든 아니든) 제거할 수 없습니다.
당신은 뛰어야 합니다.
docker inspect <container-id>/<container-name>
이 볼륨이 마운트되었을 수 있는 실행 중/비실행 중인 각 컨테이너에 있습니다.
볼륨이 용기 중 하나에 마운트된 경우 검사 명령 출력의 마운트 섹션에 볼륨이 표시되어야 합니다.이와 같은 것 :-
"Mounts": [
{
"Type": "volume",
"Name": "user1",
"Source": "/var/lib/docker/volumes/user1/_data",
"Destination": "/opt",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
],
담당 용기를 파악한 후 다음을 사용합니다.
docker rm -f container-1 container-2 ...container-n
컨테이너가 가동되는 경우
docker rm container-1 container-2 ...container-n
작동하지 않는 용기의 경우
호스트 컴퓨터에서 컨테이너를 완전히 제거합니다.
그런 다음 다음 명령을 사용하여 볼륨을 제거해 보십시오.
docker volume remove <volume-name/volume-id>
먼저 다음 명령을 사용하여 원하지 않는 용기를 잘라냅니다.
docker container prune
(모든 용기를 제거할 것인지 확인하십시오.
불필요한 용기를 모두 제거한 후 다음을 사용하여 볼륨을 잘라냅니다.
docker volume prune
현재 도커에서 제공하는 기능을 사용하여 일반적이고 보다 완벽한 청소를 수행할 수 있습니다.
docker system prune
정지된 용기와 사용되지 않은 모든 이미지(단단한 이미지뿐만 아니라)를 추가로 제거하려면 다음을 추가합니다.-a
다음 명령에 대한 플래그:
docker system prune -a
필요한 세부 정보를 제공하는 하나의 라이너:
docker inspect `docker ps -aq` | jq '.[] | {Name: .Name, Mounts: .Mounts}' | less
불만 사항의 양을 검색합니다. 컨테이너 이름도 가지고 있습니다.
먼저 해당 볼륨을 사용하는 컨테이너를 제거해야 합니다.기존 컨테이너도 포함하여 모든 컨테이너를 이름별로 나열합니다.
docker ps --all --format '{{.Names}}'
용기 제거:
docker rm NAME
용기를 제거한 후에는 볼륨도 제거할 수 있습니다.볼륨 나열:
docker volume ls
볼륨 제거:
docker volume remove VOLUME_NAME
이러한 볼륨이 실제로 시스템에 마운트되어 있다고 확신합니다./proc/mounts를 보면 거기에 있습니다.다음과 같은 작업이 필요할 것입니다.sudo umount <path>
또는sudo umount -f -n <path>
마운트된 경로를 /proc/mounts에서 또는 /proc/mounts를 통해 연결할 수 있어야 합니다.docker volume inspect
Docker Desktop Application에서 삭제할 수 있습니다.저는 이미 그것을 했고 모든 것이 괜찮습니다. 여기:)
flag -f(force)를 사용하여 다음 명령을 입력해야 합니다.
sudo docker volume rm -f <VOLUME NAME>
언급URL : https://stackoverflow.com/questions/34658836/docker-is-in-volume-in-use-but-there-arent-any-docker-containers
'programing' 카테고리의 다른 글
IntIn Swift를 기준으로 UITableView의 특정 행 새로 고침 (0) | 2023.08.14 |
---|---|
라벨 5.5사용하지 않아 페이지가 만료되었습니다.새로 고침 후 다시 시도하십시오. (0) | 2023.08.14 |
PDO 사용법에 대한 좋은 튜토리얼이 있습니까? (0) | 2023.08.14 |
Swift에서 관련 값을 무시하고 열거와 관련 값을 비교하는 방법은 무엇입니까? (0) | 2023.08.14 |
메소드를 사용하여 jQuery 플러그인을 만드는 방법은 무엇입니까? (0) | 2023.08.14 |