Làm cách nào để xóa thẻ hình ảnh trong Docker mà không xóa chính hình ảnh?


134

Giả sử tôi muốn gắn thẻ hình ảnh Docker và tạo lỗi chính tả. Làm cách nào để xóa thẻ mà không xóa hình ảnh? Cả tài liệu hướng dẫn và tài liệu Docker đều không đề cập đến việc xóa thẻ.

docker tag 0e5574283393 my-imaj
docker tag 0e5574283393 my-image
# docker untag my-imaj # There is no "docker untag"!

4
Dành cho những ai muốn bỏ đánh dấu <none>các hình ảnh như foo/bar:<none>: sử dụng docker images --digestsdocker rmi foo/bar@<digest>như được mô tả tại thành
công.docker.com / Kase / Kẻ

Câu trả lời:


194

Nếu hình ảnh của bạn được gắn thẻ nhiều hơn một thẻ, sau đó docker rmisẽ xóa thẻ, nhưng không xóa hình ảnh.

Vì vậy, trong ví dụ của bạn ...

# docker rmi my-imaj

... sẽ xóa thẻ đó và để lại hình ảnh hiện tại với thẻ chính xác khác.


4
Cảm ơn. Tôi ước họ đề cập đến điều này trong tài liệu: - /
Mihai

2
Nếu thẻ tôi đang xóa là cái cuối cùng, hình ảnh sẽ bị xóa. Vì vậy, tôi tự hỏi câu trả lời cho câu hỏi trong chủ đề là gì? Làm cách nào để xóa thẻ và giữ hình ảnh được lưu trong bộ nhớ cache?
kub1x

4
Và câu trả lời là luôn luôn sử dụng--help , đừng lười đọc. docker image remove --no-prune.. trong trường hợp ai đó quan tâm.
kub1x

4
Điều này là sai, nó chỉ đơn giản là loại bỏ hình ảnh của tôi. May mắn thay, biết docker tôi đã nghi ngờ, và đã tạo một bản sao lưu trước đó với docker save.
dùng259412

2
@peterh câu trả lời nêu rõ If your image is tagged with more than one tag..., nó cần được cập nhật tuy nhiên với lệnh từ các bình luận giải thích cách xóa thẻ cuối cùng mà không xóa hình ảnh.
BrainSlugs83


17

Bắt đầu từ repo docker trống, nhập hình ảnh bằng cách gõ:

#docker run hello-world

Chạy docker imageslệnh để liệt kê các hình ảnh. Kết quả sẽ như thế này:

REPOSITORY        TAG           IMAGE ID          CREATED           SIZE
hello-world       latest        7bc42cc48a84      4 weeks ago       316MB

Bây giờ, hãy tạo một thẻ hình ảnh được gọi là v1 bằng cách chạy docker taglệnh:

#docker tag hello-world:latest hello-world:v1

Nếu chúng ta chạy docker imageslệnh, chúng ta sẽ thấy thẻ mới của mình như thế này:

REPOSITORY        TAG           IMAGE ID          CREATED           SIZE
hello-world       latest        7bc42cc48a84      4 weeks ago       316MB
hello-world         v1          7bc42cc48a84      4 weeks ago       316MB

Để xóa một thẻ cụ thể (để trả lời câu hỏi ban đầu), hãy chạy docker rmi hello-world:v1trong đó v1 là tên thẻ. Đầu ra sẽ như thế này:

#docker rmi hello-world:v1
Untagged: hello-world:v1

Chạy docker imageslệnh để liệt kê các hình ảnh. Lưu ý rằng thẻ hình ảnh đã bị xóa:

REPOSITORY        TAG           IMAGE ID          CREATED           SIZE
hello-world       latest        7bc42cc48a84      4 weeks ago       316MB

Cách tiếp cận ít mơ hồ nhất mặc dù 3 năm sau. +1
bvj

0

Gắn thẻ hình ảnh khác với tên thẻ của bạn và sau đó thẻ của bạn từ hình ảnh hiện tại của bạn sẽ bị xóa.


Chào mừng bạn đến với ServerFault! Hãy làm rõ hoặc thêm một số bước ví dụ lệnh. Kiểm tra hướng dẫn tại đây: serverfault.com/help/how-to-answer
Cory Knutson

Không phải là một câu trả lời hữu ích, nếu thẻ là một lỗi đánh máy như được chỉ ra, bạn cũng sẽ không muốn nó trên một số hình ảnh khác.
Ken Williams
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.