hình ảnh đang được sử dụng bởi vùng chứa đã dừng


94

Tôi đang cố gắng xóa vùng chứa docker bằng lệnh này:

docker rmi <Image-Id>

Rõ ràng, tôi đã thay thế Id hình ảnh bằng Id tôi đang sử dụng:

docker images

Nhưng tôi thấy lỗi bên dưới:

Error response from daemon: conflict: unable to delete <Image-ID> (must be forced) - image is being used by stopped container xxxxxxxxxxx

Câu trả lời:


122

Bạn cũng có thể sử dụng --force , -fBuộc xóa hình ảnh

Nếu bạn sử dụng cờ -f và chỉ định ID ngắn hoặc dài của hình ảnh, thì lệnh này sẽ bỏ gắn thẻ và xóa tất cả các hình ảnh khớp với ID đã chỉ định.

  docker rmi -f <image_id> 

1
Cảm ơn, Nó hoạt động tốt nhưng có một vấn đề. Tôi đã xóa một hình ảnh 10 GB nhưng sau khi xóa nó, tôi không thể thấy bất kỳ thay đổi nào trong dung lượng đĩa trống của mình.
Mehrdad Babaki

1
bạn đã loại bỏ khối lượng gắn với hình ảnh và bạn đã kiểm tra kích thước hình ảnh của mỗi
Adiii

1
Không hẳn, tôi là người mới làm quen với docker. Tôi sẽ thử công cụ. Bằng cách nào tôi có thể sử dụng dòng lệnh để phát hiện âm lượng và loại bỏ chúng?
Mehrdad Babaki

1
có âm lượng docker ls; để list volume và để loại bỏ, khối lượng Docker rm v_id
Adiii

40

Bạn cần xóa vùng chứa đã dừng docker rmvà sau đó bạn có thể xóa hình ảnh mà vùng chứa đó sử dụng docker rmi.


3
Đây là một phần của bất kỳ câu trả lời đầy đủ nào. Bạn có thể buộc xóa hoặc xóa hình ảnh đã dừng.
bmacnaughton

28

Bạn cũng có thể thấy rằng bạn đã dừng các thùng chứa gây ra khóa. Xóa những thứ này trước tiên bằng cách sử dụng:

docker rm  $(docker ps -q -a)

Ở đây chúng tôi liệt kê các quy trình docker chỉ bằng ID và sau đó xóa chúng; tuy nhiên, docker rm sẽ chỉ loại bỏ các vùng chứa đã dừng.

Tiếp theo, quay lại và xóa hình ảnh bằng cách sử dụng:

docker image rm <image_id>

22

Bạn phải loại bỏ vùng chứa trước.
Cưỡng bức là phương pháp cuối cùng cần thực hiện.

#check container
docker ps -a

#remove container
docker rm containerID

3
Rõ ràng là câu trả lời tốt nhất. Người duy nhất giải thích cách lấy danh sách các container đã dừng.
Marco

4

Trong trường hợp docker rmi <image-id>không hoạt động, hãy thử điều này:

Dừng tất cả các vùng chứa đang chạy

docker stop $(docker ps -aq)

Xóa tất cả các vùng chứa

docker rm $(docker ps -aq)

Xóa tất cả hình ảnh

docker rmi $(docker images -q)

3

Ngoài các câu trả lời khác, tôi gặp vấn đề tương tự khi sử dụng Docker cho Mac nhưng docker ps -akhông hiển thị bất kỳ vùng chứa nào đang chạy. Đang chạy docker imageschương trình:

docker/desktop-storage-provisioner   v1.0                605a0f683b7b        2 months ago        33.1MB
k8s.gcr.io/kube-controller-manager   v1.15.5             1399a72fa1a9        6 months ago        159MB
k8s.gcr.io/kube-proxy                v1.15.5             cbd7f21fec99        6 months ago        82.4MB
k8s.gcr.io/kube-apiserver            v1.15.5             e534b1952a0d        6 months ago        207MB
k8s.gcr.io/kube-scheduler            v1.15.5             fab2dded59dd        6 months ago        81.1MB
docker/kube-compose-controller       v0.4.23             a8c3d87a58e7        11 months ago       35.3MB
docker/kube-compose-api-server       v0.4.23             f3591b2cb223        11 months ago       49.9MB
k8s.gcr.io/coredns                   1.3.1               eb516548c180        16 months ago       40.3MB
k8s.gcr.io/etcd                      3.3.10              2c4adeb21b4f        17 months ago       258MB
k8s.gcr.io/pause                     3.1                 da86e6ba6ca1        2 years ago         742kB

Tất cả những hình ảnh này đều được ứng dụng Docker sử dụng nếu bạn đã bật Kubernetes. Trong tùy chọn Docker cho Mac, có một phần dành cho Kubernetes. Nếu bạn nhấp vào "Hiển thị vùng chứa hệ thống (nâng cao)", chúng sẽ xuất hiện trong docker ps.

Nếu muốn xóa những hình ảnh này, bạn cần tắt Kubernetes thông qua ứng dụng Docker dành cho Mac, sau đó thử lại.


2

Vùng chứa Docker chạy trên các hình ảnh docker, bạn chỉ có thể xóa một hình ảnh nếu nó không được đính kèm vào bất kỳ vùng chứa nào.! Vì vậy, bạn phải dừng vùng chứa và loại bỏ vùng chứa sau đó bạn có thể loại bỏ id hình ảnh.

docker stop container-id và docker rm container-id

Sau đó, hãy thử xóa image docker rmi image-id hình ảnh

Một số thông tin bổ sung được cung cấp trong liên kết dưới đây. Chúc mừng.!

https://docs.docker.com/config/pruning/


Đây phải là câu trả lời chính xác sau quá trình dừng vùng chứa (docker-soạn dừng) -> loại bỏ vùng chứa (docker rm <tên của vùng chứa>) -> loại bỏ các hình ảnh liên quan (docker rmi <image_id>).
kta

1

Nếu mục đích là lấy lại dung lượng ổ đĩa, một cách tiếp cận khác chưa được đề cập là sử dụng docker system prune. Nó sẽ in một cảnh báo cần được chú ý:

WARNING! This will remove:
  - all stopped containers
  - all networks not used by at least one container
  - all dangling images
  - all dangling build cache

Thao tác này sẽ không xóa các hình ảnh đã đặt tên, nhưng sẽ xóa các hình ảnh không có tên trung gian. Tùy thuộc vào kích thước của các vùng chứa mà bạn đang sử dụng, điều này có thể tiết kiệm đáng kể dung lượng ổ đĩa.


0

Nếu bạn đã thay đổi trong Dockerfilevà nếu bạn đang sử dụng trình soạn thư docker, bạn chỉ có thể xây dựng lại hình ảnh của mình bằng cách chạy docker-compose với --buildtùy chọn!


Nếu bạn thực hiện bất kỳ thay đổi nào trên các Dockerfilebạn shoudn't xóa hình ảnh mình chỉ sử dụng cờ --buildvới docker-composenên xây dựng lại một hình ảnh mới với những thay đổi
ans1genie
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.