Cách xóa tất cả hình ảnh Docker cục bộ Docker


265

Gần đây tôi đã bắt đầu sử dụng Docker và không bao giờ nhận ra rằng tôi nên sử dụng docker-compose downthay vì ctrl-choặc docker-compose stopđể loại bỏ các thử nghiệm của mình. Bây giờ tôi có một số lượng lớn các hình ảnh docker không cần thiết tại địa phương.

Có một cờ tôi có thể chạy để xóa tất cả các hình ảnh & container docker cục bộ không?

Một cái gì đó giống như - tất cả docker rmi --all --forcecờ không tồn tại nhưng tôi đang tìm kiếm thứ gì đó có ý tưởng tương tự.



2
docker images purge-> sẽ xóa tất cả hình ảnh
docker

Với xargs:docker image ls -q | xargs -I {} docker image rm -f {}
arkadyt

@muthukumarhelius Tôi nghĩ bạn có ý nghĩa docker image prune(hình ảnh là số ít và nó cắt tỉa thay vì thanh trừng).
Andrés Mejía

Câu trả lời:


532

Để xóa tất cả các container bao gồm cả khối lượng sử dụng,

docker rm -vf $(docker ps -a -q)

Để xóa tất cả các hình ảnh,

docker rmi -f $(docker images -a -q)

Hãy nhớ rằng, bạn nên xóa tất cả các container trước khi xóa tất cả các hình ảnh mà các container đó được tạo.

Trong trường hợp bạn đang làm việc trên Windows (Powershell),

$images = docker images -a -q
foreach ($image in $images) { docker image rm $image -f }

7
unknown shorthand flag: 'a' in -akhi chạydocker rmi -f $(docker images -a -q)
Ashutosh Chamoli

25
@Ashutosh Chamoli: Không hoạt động trong CMD, hoạt động trong PowerShell.
Jack

4
Biến thể một dòng cho powershell:docker images -a -q | % { docker image rm $_ -f }
CodeStix

4
Tôi phải đến đây 100 lần. Cảm ơn đã viết câu trả lời này!
Ajay Maity

「Docker rmi -f $ (hình ảnh
docker

176

Sử dụng để xóa mọi thứ :

docker system prune -a --volumes

Xóa tất cả các container, khối lượng, mạng và hình ảnh không sử dụng

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 images without at least one container associated to them
    - all build cache

https://docs.docker.com/engine/reference/commandline/system_prune/#extends-description


1
Tuy nhiên, không thực sự đòi lại tất cả không gian đĩa.
lucian303

@ lucian303 phương pháp này không đòi lại không gian đĩa. Có lẽ bạn đang phải đối mặt với một vấn đề cụ thể.
Robert

Tôi dường như chỉ nhận được kết quả mong muốn khi tôi làm điều này các bước trong câu trả lời của
@techtabu

31

Để đơn giản, mọi thứ đều rõ ràng:

$ docker system prune --all

Tất cả mọi thứ có nghĩa là:

  • tất cả các container đã dừng
  • tất cả các mạng không được sử dụng bởi ít nhất một container
  • tất cả các hình ảnh mà không có ít nhất một container liên quan đến chúng
  • tất cả xây dựng bộ nhớ cache

25

docker image prune -a

Loại bỏ tất cả các hình ảnh không sử dụng, không chỉ những hình ảnh lơ lửng. Thêm -ftùy chọn để buộc.

Phiên bản docker cục bộ: 17.09.0-ce, Git commit: afdb6d4, OS / Arch: darwin / amd64

$ docker image prune -h
Flag shorthand -h has been deprecated, please use --help

Usage:  docker image prune [OPTIONS]

Remove unused images

Options:
  -a, --all             Remove all unused images, not just dangling ones
      --filter filter   Provide filter values (e.g. 'until=<timestamp>')
  -f, --force           Do not prompt for confirmation
      --help            Print usage

7

Các lệnh dễ dàng và tiện dụng

Để xóa tất cả các hình ảnh

docker rmi $(docker images -a)

Để xóa các container đang ở trạng thái thoát

docker rm $(docker ps -a -f status=exited -q)

Để xóa các container đang ở trạng thái được tạo

docker rm $(docker ps -a -f status=created -q)

LƯU Ý: Xóa tất cả các vùng chứa rồi xóa hình ảnh


để xóa tất cả hình ảnh, nên là - "docker rmi $ (hình ảnh docker -a -q)". -q chỉ trả về id hình ảnh
Jimmy MG Lim

điều đó có nghĩa là nó đã xóa những hình ảnh đó. Kiểm tra lại một lần nữa
Deep Nirmal

3

Để xóa tất cả hình ảnh:

docker rmi -f $(docker images -a | awk {'print $3'})

Giải trình:

hình ảnh docker -a | awk {'in $ 3'}

Lệnh này sẽ trả về tất cả id hình ảnh và sau đó được sử dụng để xóa hình ảnh bằng id của nó.


3

Xóa mà không gọi docker :

rm -rf /var/lib/docker

Điều này không được khuyến khích nếu bạn có thể chạy docker bình thường, nhưng nếu vì bất kỳ lý do gì bạn không thể hoặc không muốn, điều này sẽ hoạt động.


2

Bạn có thể thử như thế này:

docker system prune

Trong trường hợp của tôi, điều này sẽ loại bỏ một khối lượng mà tôi vẫn sử dụng. Đừng sử dụng cái này nếu bạn không biết nó làm gì
Zach Smith

2

Để xóa tất cả hình ảnh:

docker rmi $(docker images -a -q)

trong đó -a là tất cả và -q chỉ trả về id hình ảnh

Để xóa hình ảnh không sử dụng và thùng chứa:

docker system prune

hãy cẩn thận như thể bạn đang sử dụng docker swarm và máy cục bộ của bạn đang tham gia swarm từ xa (với tư cách là người quản lý / công nhân), địa phương của bạn sẽ là repo được triển khai. thực hiện điều này do đó loại bỏ các hình ảnh triển khai.


2
docker rmi $(docker images -q) --force

2
Bạn nên thêm một số lời giải thích khi để lại câu trả lời trên một bài đăng, để những người khác tìm thấy nó sau này có thể hiểu nó.
Morphyish

1

Thêm vào câu trả lời được chấp nhận của techtabu, Nếu bạn đang sử dụng docker trên windows, bạn có thể sử dụng lệnh sau

for /F "delims=" %A in ('docker ps -a -q') do docker rm %A

ở đây, lệnh docker ps -a -qliệt kê tất cả các hình ảnh và danh sách này được truyền cho docker rmtừng người một

xem phần này để biết thêm chi tiết về cách thức định dạng lệnh này hoạt động trong windows cmd.


1

Một cách khác với xargs

docker image ls -q | xargs -I {} docker image rm -f {}

0

Để xóa tất cả hình ảnh Docker cục bộ Docker theo 2 bước ::

Bước 1: hình ảnh docker (liệt kê tất cả hình ảnh docker với id)

     example :
     REPOSITORY    TAG    IMAGE ID            CREATED             SIZE
     pradip564/my  latest 31e522c6cfe4        3 months ago        915MB

bước 2: hình ảnh docker rm 31e522c6cfe4 (ID IMAGE)

      OUTPUT : image deleted
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.