I want to remove the container at Docker, but an error occurs when you want to delete
My next step before removing the container, see the list of existing container
sts@Yudi:~/docker$ sudo docker ps -as
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES SIZE
78479ffeba5c ubuntu "/bin/bash" 42 hours ago Exited (0) 42 hours ago sharp_wescoff 81 B (virtual 187.7 MB)
0bd2b54678c7 training/webapp "python app.py" 5 days ago Exited (0) 5 days ago backstabbing_ritchie 0 B (virtual 323.7 MB)
0adbc74a3803 training/webapp "python app.py" 5 days ago Exited (143) 5 days ago drunk_feynman 0 B (virtual 323.7 MB)
one I want to delete the list, namely «training / webapp»
but an error that occurred
sts@Yudi:~/docker$ sudo docker rmi training/webapp
Error response from daemon: conflict: unable to remove repository reference "training/webapp" (must force) - container 0bd2b54678c7 is using its referenced image 54bb4e8718e8
Error: failed to remove images: [training/webapp]
Whether the container is running in the images?
Please help
Mark Chorley
2,0872 gold badges22 silver badges29 bronze badges
asked Nov 25, 2015 at 3:06
0
There is a difference between docker images and docker containers. Check this SO Question.
In short, a container is a runnable instance of an image. which is why you cannot delete an image if there is a running container from that image. You just need to delete the container first.
docker ps -a # Lists containers (and tells you which images they are spun from)
docker images # Lists images
docker rm <container_id> # Removes a stopped container
docker rm -f <container_id> # Forces the removal of a running container (uses SIGKILL)
docker rmi <image_id> # Removes an image
# Will fail if there is a running instance of that image i.e. container
docker rmi -f <image_id> # Forces removal of image even if it is referenced in multiple repositories,
# i.e. same image id given multiple names/tags
# Will still fail if there is a docker container referencing image
Update for Docker 1.13+ [Since Jan 2017]
In Docker 1.13, we regrouped every command to sit under the logical object it’s interacting with
Basically, above commands could also be rewritten, more clearly, as:
docker container ls -a
docker image ls
docker container rm <container_id>
docker image rm <image_id>
Also, if you want to remove EVERYTHING you could use:
docker system prune -a
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all unused images
- all build cache
answered Oct 27, 2016 at 11:43
Ahmad AbdelghanyAhmad Abdelghany
11.2k5 gold badges40 silver badges35 bronze badges
9
First, remove the container names
$ sudo docker rm backstabbing_ritchie
The result
$ sudo docker rm backstabbing_ritchie
backstabbing_ritchie
delete the second part, which is listed on the container to be deleted
$ sudo docker rm drunk_feynman
drunk_feynman
Second, remove the container
$ sudo docker rmi training/webapp
The result
$ sudo docker rmi training/webapp
Untagged: training/webapp:latest
Deleted: 54bb4e8718e8600d78a5d7c62208c2f13c8caf0e4fe73d2bc0e474e93659c0b5
Deleted: f74dd040041eb4c032d3025fe38ea85de8075992bdce6789b694a44b20feb8de
Deleted: 7cbae69141977b99c44dc6957b032ad50c1379124d62b7d7d05ab7329b42348e
Deleted: abb991a4ed5e4cde2d9964aec4cccbe0015ba9cc9838b696e7a32e1ddf4a49bd
Deleted: 1952e3bf3d7e8e6a9b1e23bd4142e3c42ff7f4b7925122189704323593fd54ac
Deleted: f95ebd363bf27a7546deced7a41a4099334e37a3d2901fa3817e62bb1ade183f
Deleted: 20dd0c75901396d41a7b64d551ff04952084cc3947e66c67bae35759c80da338
Deleted: 2505b734adda3720799dde5004302f5edb3f2a2ff71438f6488b530b728ba666
Deleted: 2ee0b8f351f753f78f1178000ae37616eb5bf241d4ef041b612d58e1fd2aefdc
Deleted: 2ce633e3e9c9bd9e8fe7ade5984d7656ec3fc3994f05a97d5490190ef95bce8d
Deleted: 98b15185dba7f85308eb0e21196956bba653cf142b36dc08059b3468a01bf35d
Deleted: 515565c29c940355ec886c992231c6019a6cffa17ff1d2abdfc844867c9080c5
Deleted: 2880a3395eded9b748c94d27767e1e202f8d7cb06f1e40e18d1b1c77687aef77
Check the continer
$ sudo docker ps -as
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES SIZE
78479ffeba5c ubuntu "/bin/bash" 43 hours ago Exited (0) 43 hours ago sharp_wescoff 81 B (virtual 187.7 MB)
answered Nov 25, 2015 at 3:21
YudayYuday
3,9914 gold badges16 silver badges23 bronze badges
3
If you want to cleanup docker images and containers
CAUTION: this will flush everything
stop all containers
docker stop $(docker ps -a -q)
remove all containers
docker rm $(docker ps -a -q)
remove all images
docker rmi -f $(docker images -a -q)
answered May 4, 2018 at 11:06
quAntonquAnton
7566 silver badges10 bronze badges
1
you can use -f
option to force delete the containers .
sudo docker rmi -f training/webapp
You may stop the containers using sudo docker stop training/webapp
before deleting
answered Nov 25, 2015 at 3:19
2
If you have multiples docker containers launched, use this
$ docker rm $(docker ps -aq)
It will remove all the current dockers listed in the «ps -aq» command.
Source : aaam on https://github.com/docker/docker/issues/12487
answered Jun 21, 2016 at 15:20
gaelgael
7636 silver badges16 bronze badges
1
1-Stop running container:
docker stop <container-id>
2-Remove container
docker rm <container-id>
3-Remove docker image
docker rmi <image-id>
answered Jun 22, 2021 at 20:52
Ahmet ArslanAhmet Arslan
4,9921 gold badge31 silver badges34 bronze badges
1
list all your docker images:
docker images
list all existed docker containers:
docker ps -a
delete all the targeted containers, which is using the image that you want to delete:
docker rm <container-id>
delete the targeted image:
docker rmi <image-name:image-tag or image-id>
answered Jun 11, 2020 at 11:14
Noticed this is a 2-years old question, but still want to share my workaround for this particular question:
Firstly, run docker container ls -a
to list all the containers you have and pinpoint the want you want to delete.
Secondly, delete the one with command docker container rm <CONTAINER ID>
(If the container is currently running, you should stop it first, run docker container stop <CONTAINER ID>
to gracefully stop the specified container, if it does not stop it for whatever the reason is, alternatively you can run docker container kill <CONTAINER ID> to force shutdown of the specified container
).
Thirdly, remove the container by running docker container rm <CONTAINER ID>
.
Lastly you can run docker image ls -a
to view all the images and delete the one you want to by running docker image rm <hash>
.
answered Mar 27, 2018 at 22:49
User3301User3301
953 silver badges8 bronze badges
Deleting «network not found» in docker
Inspect the network which we are unable to delete
docker network inspect [<id> or <name>]
Disconnect the network
docker network disconnect -f [<networkID> or <networkName>] [<endpointName> or <endpointId>]
Delete unused networks
docker network prune
answered Mar 10, 2021 at 14:10
Jinna BaluJinna Balu
6,07936 silver badges45 bronze badges
Remove docker images >
List all containers
docker container ls
List all images
docker image ls
Stop container by container id
docker container stop <container_id>
Remove container by container id
docker container rm <container_id>
If don’t want stop and remove, can force remove
docker container rm -f <container_id>
Remove image
docker image rm <image_id>
Done!
keikai
13.2k8 gold badges47 silver badges67 bronze badges
answered Dec 9, 2019 at 21:27
Remove just the containers associated with a specific image
docker ps -a | grep training/webapp | cut -d ' ' -f 1 | xargs docker rm
- ps -a: list all containers
- grep training/webapp : filter out everything but the containers started from the training/webapp image
- cut -d ‘ ‘ -f 1: list only the container ids (first field when delimited by space)
- xargs docker rm : send the container id list output to the docker rm command to remove the container
answered Feb 5, 2020 at 6:35
AndrewDAndrewD
4,7013 gold badges29 silver badges31 bronze badges
Simply these two commands solve my issue.
Stop the particular container.
docker stop <container_id>
Forces removal of the image even if it is referenced in multiple repositories.
docker rmi -f <container_id>
answered Jan 16 at 17:23
I have a bunch of test images on my host i use.
**docker rmi docker images |grep "hello-world" | awk '{print $1}'**
to delete one image.on excution, i got error.
Error response from docker daemon :Error response from daemon: conflict: unable to remove repository reference «hello-world» (must force) — container 3061de2e8c9c is using its referenced image 690ed74de00f
docker ps | grep 3061de2e8c9c
on which i got nothing.
docker attach 3061de2e8c9c
on which i got error: You cannot attach to a stopped container, start it first.
So there is no active containers, then why i could not delete the image?
because you have stopped container, please use
docker ps -a
to see all containers
maybe https://docs.docker.com/ is good place for you learn
closing, because (as @HackToday explained), this is not a bug
you can remove it force
such as
docker rmi -f 2234oi23u4io2
smile-magic, mulfyx, ronnyDevelop, thedarkcoderrises, xditx32, and DeNIKE666 reacted with heart emoji
Using --force
to remove an image that’s in use by a container is not really recommended. Remove the container if it’s no longer needed.
@thaJeztah — I’m getting similar myself (found this thread via google search).
Please see steps to diagnose after attempting docker rmi IMAGENAME and receiving message:
~$ docker rmi e5d9538a77db
Error response from daemon: conflict: unable to delete e5d9538a77db (must be forced) — image is referenced in multiple repositories
~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
~$ docker ps -a -q
~$
As you can see no running containers yet the images can’t be deleted. I’m on a Mac running Docker Toolbox
@ljavierrivera different error message;
image is referenced in multiple repositories
Which means you’re trying to remove an image by its ID
, however the image is tagged under multiple names. Docker then refuses to remove the image, because it would remove multiple image in a single remove. You can still remove the individual images by name. If you don’t have containers running, you can --force
delete the image in that case.
However, using the docker image prune
functionality that was added recently may be a better option.
get it. docker rmi -f ${docker id}
Yes, the command docker image prune
worked for me followed by docker rmi ...
I receive this error Error response from daemon: conflict: unable to delete b472d6a9286d (cannot be forced) - image is being used by running container 8c2009966994
.
If I stop all the containers built on this image and then they spin up again very fast due to my docker-compose.yml
.
version: "3" services: web: # replace username/repo:tag with your name and image details image: ndabas333/hola:newtest deploy: replicas: 5 resources: limits: cpus: "0.1" memory: 50M restart_policy: condition: on-failure ports: - "80:80" networks: - webnet networks: webnet:
This image doesn’t exist on my registry now so help me to delete it along with the containers.
Use the below command to remove it:
docker rmi --force DOCKER_IAMGE_NAME
Introduction
This article title is quite long. But it is actually to inform completely the error message occurs open removing a docker image. This article has a specific subject to remove a docker image. It is removing the docker image which is failing only by using the normal command. That normal command itself exist in this link as an additional reference. It is an article with the title of ‘How to Remove Docker Images in the Local Machine’. So, the normal command is for removing the docker image using ‘docker rmi image_name’. But apparently, the execution of that command failed. The following is an example of that command execution which ends in failure :
latest fce289e99eb9 8 months ago 1.84kB root@hostname ~# docker rmi hello-world Error response from daemon: conflict: unable to remove repository reference "hello-world" (must force) - container ffc2fb7d058e is using its referenced image fce289e99eb9 root@hostname ~#
It appears the image is still exist after executing the above command for removing the docker image. The following is an attempt to list again the available docker image in the local machine just to prove that the docker image is still exist :
root@hostname ~# docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos-nginx_web latest 36c49ff2d3bc 2 days ago 457MB apache_image latest 2051d26d51fa 2 days ago 1.61GB 192.168.84.238:5000/busybox latest 19485c79a9bb 2 weeks ago 1.22MB php apache aa4bdc74350b 2 weeks ago 414MB php 7.1-apache 1b3f4ce0de58 4 weeks ago 405MB centos 7 67fa590cfc1c 4 weeks ago 202MB centos latest 67fa590cfc1c 4 weeks ago 202MB ubuntu latest a2a15febcdf3 4 weeks ago 64.2MB tomcat latest 6e30b06a90d3 4 weeks ago 506MB mysql 5.7 e1e1680ac726 5 weeks ago 373MB mysql latest 62a9f311b99c 5 weeks ago 445MB mysql/mysql-cluster latest 67fd04af4b8e 8 weeks ago 338MB mysql/mysql-server 5.7 d1469951af27 8 weeks ago 262MB tensorflow/tensorflow latest 7f03c4ff368a 3 months ago 1.17GB centos 9f38484d220f 6 months ago 202MB registry 2 f32a97de94e1 6 months ago 25.8MB hello-world latest fce289e99eb9 8 months ago 1.84kB root@hostname ~#
Completely remove docker image by force
So, in order to remove it completely and successfully, it is necessary to modify the command. Apparently, there is an additional parameter to the command for removing it by force. That argument is the ‘–force’ or ‘-f’ where it follows the actual command. The following is an example of the execution :
root@hostname ~# docker rmi -f hello-world Untagged: hello-world:latest Untagged: hello-world@sha256:451ce787d12369c5df2a32c85e5a03d52cbcef6eb3586dd03075f3034f10adcd Deleted: sha256:fce289e99eb9bca977dae136fbe2a82b6b7d4c372474c9235adc1741675f587e root@hostname ~#
Содержание
- Docker unable to delete image must be forced – How we fix it?
- What is a Docker image and container?
- Causes and fixes for the Docker error unable to delete image
- Unable to delete an image as a container is running
- Unable to delete an image used by a stopped container
- Conclusion
- Are you using Docker based apps?
- Как удалить все контейнеры Docker, образы, тома и сети
- Удаляем все неиспользуемые объекты
- Удаление контейнеров Docker
- Удаляем один или несколько контейнеров
- Удалить все остановленные контейнеры
- Удаляем контейнер используя фильтр
- Остановить и удалить все контейнеры
- Как удалить образы Docker
- Удаляем висящие и неиспользуемые образы
- Удаляем образы используя фильтры
- Удаление Docker томов
- Удалить один или несколько томов
- Удалить неиспользуемые тома
- Удаление сети Docker
- Одна или несколько сетей
- Удалить неиспользуемую сеть
- Удалить сети с помощью фильтров
- Как удалить контейнеры, образы, тома и сети Docker
- Удаление всех неиспользуемых объектов Docker
- Удаление контейнеров Docker
- Удаление одного или нескольких контейнеров
- Удаление всех остановленных контейнеров
- Удаление контейнеров с помощью фильтров
- Остановите и удалите все контейнеры
- Удаление образов Docker
- Удаление одного или нескольких изображений
- Удаление болтающихся изображений
- Удаление всех неиспользуемых изображений
- Удаление изображений с помощью фильтров
- Удаление томов Docker
- Удаление одного или нескольких томов
- Удаление всех неиспользуемых томов
- Удаление сетей Docker
- Удаление одной или нескольких сетей
- Удаление всей неиспользуемой сети
- Удаление сетей с помощью фильтров
- Выводы
Docker unable to delete image must be forced – How we fix it?
by Keerthi PS | Jan 20, 2020
Oops! Docker is showing the error unable to delete the image (must be forced). We can help you fix it.
Usually, this error shows up if a container is running in the image.
If there are no running containers we can forcefully remove the image.
At Bobcares, we often get requests to fix Docker errors, as a part of our Docker Hosting Support.
Today, our Support Engineers will provide clarification of deleting an image.
What is a Docker image and container?
Many newbies do not have a complete idea of Docker image and container. Hence, they end up in errors while building or managing it.
Docker images and containers are closely related. A running instance of an image is a container. In addition, we can have multiple running containers of one image.
Causes and fixes for the Docker error unable to delete image
Docker does not remove the used objects like containers, images, etc by its own. These unused objects can take up server space. So users remove them.
Here we will discuss the error showed up while removing a Docker image. The command to delete a Docker image is,
But this can often end up in the error unable to delete image must be forced. So let’s see a few instances where this error shows up.
Unable to delete an image as a container is running
Recently, one of our customers got an error while deleting an image. And the error message appeared as,
The error message specifies that a container is using the referred image. So our Support Engineers checked the containers and images in the server.
To list the containers we use the command,
And to list the images we use the command,
Then we stop the container using the command
Later we remove the container using the command,
Finally, remove the image using the command,
This successfully removes the image.
Unable to delete an image used by a stopped container
Another customer had a slightly different situation. And the error message appears as,
Here the image is being used by a stopped container.
Since it is a stopped container, our Support Engineers forcefully removed it. Here we used the command,
Hence, this successfully removed the image. This situation appears as,
[Still, having trouble in fixing Docker errors? – Our Experts are available 24/7.]
Conclusion
In short, Docker error unable to delete image must be forced occur if some containers are running on it. If it is a stopped container we forcefully remove it. If not we stop and remove the container and delete the image. Today, we saw two instances where our Support Engineers fixed this error.
Are you using Docker based apps?
There are proven ways to get even more out of your Docker containers! Let us help you.
Spend your time in growing business and we will take care of Docker Infrastructure for you.
Источник
Как удалить все контейнеры Docker, образы, тома и сети
Docker позволяет быстро создавать, тестировать и развертывать приложения как портативные самостоятельные контейнеры, которые могут работать практически в любой системе.
Docker не удаляет неиспользуемые объекты, такие как контейнеры, образы, тома и сети, если вы явно не скажете ему об этом. При работе с Docker можно легко накопить большое количество мусорных объектов, которые занимают много места на диске и размешивают данные, создаваемые командами Docker.
Это руководство служит «шпаргалкой», чтобы помочь пользователям Docker сохранить свою систему организованной и освободить место на диске, удалив все неиспользуемые контейнеры Docker, образы, тома и сети.
Удаляем все неиспользуемые объекты
Команда docker system prune удалит остановленные контейнеры, все висячие образы и все неиспользуемые сети:
Вы можете использовать флаг -f или —force, чтобы пропустить дополнительный запрос на подтверждение операции.
Удаление контейнеров Docker
Контейнеры Docker не удаляются автоматически при их остановке, если вы специально не указали флаг —rm при его запуске.
Удаляем один или несколько контейнеров
Чтобы удалить один или несколько образов Docker используйте команду docker container rm, после которой следует указать идентификатор контейнера, который необходимо удалить. Список всех активных и неактивных контейнеров можно получить, передав флаг -a команде docker container ls:
В качестве результата выполнения этой команды вы должны увидеть такую таблицу:
Как только вы нашли необходимый идентификатор контейнера, который хотите удалить, передайте его имя команде docker container rm. Например, чтобы удалить первые два контейнера, перечисленных выше выполните команду:
Если вы получаете сообщение об ошибке, подобное приведенному ниже, это означает, что контейнер все еще работает. Перед удалением контейнера, его необходимо остановить.
Error response from daemon: You cannot remove a running container fc983ebf4771d42a8bd0029df061cb74dc12cb174530b2036987575b83442b47. Stop the container before attempting removal or force remove.
Удалить все остановленные контейнеры
Перед выполнением команды можно получить список всех неиспользуемых (остановленных) контейнеров, с помощью следующей команды:
Чтобы удалить все остановленные контейнеры, используйте команду docker container prune:
Вам будет предложено продолжить, используйте флаг-for —force, чтобы пропустить этот вопрос.
Удаляем контейнер используя фильтр
Команда docker container prune позволяет удалить контейнеры в зависимости от их состояния, используя флаг фильтрации —filter. На момент написания этой статьи дополнительно поддерживаются фильтры until и label. Вы можете использовать более одного фильтра, передавая несколько флагов —filter.
Например, чтобы удалить все образы, созданные более 12 часов назад, запустите:
Остановить и удалить все контейнеры
Вы можете получить список всех контейнеров Docker в вашей системе с помощью команды docker container ls -aq. Чтобы остановить все запущенные контейнеры, используйте команду docker container stop, после которой укажите список всех идентификаторов.
После остановки всех контейнеров их можно удалить. Используя команду docker container stop, за которой следует список идентификаторов контейнеров попробуем сделать это:
Как удалить образы Docker
Для удаления одного или нескольких образов Docker используйте команду docker images ls, чтобы найти идентификатор(ID) образа, который нужно удалить.
Вывод должен выглядеть примерно так:
Как только вы найдете образы, которые хотите удалить, передайте их идентификаторы команде docker image rm. Например, чтобы удалить первые два образа, перечисленные в выходных данных выше выполните:
Если вы получите ошибку, подобную следующей, это означает, что образ используется контейнером. Чтобы удалить образ, нужно сначала удалить контейнер.
Error response from daemon: conflict: unable to remove repository reference «centos» (must force) — container cd20b396a061 is using its referenced image 75835a67d134
Удаляем висящие и неиспользуемые образы
Docker имеет команду docker image prune, которая может использоваться для удаления висячих и неиспользуемых образов. Висячий образ — это такой образ, который не отмечен и не используется ни одним контейнером. Для удаления висячих изображений введите:
Вам будет предложено продолжить, используйте флаг -f или —force, чтобы пропустить этот вопрос.
Чтобы удалить все образы, на которые не ссылается ни один существующий контейнер, используйте флаг -a:
Удаляем образы используя фильтры
С помощью команды docker image prune можно удалить образы используя определенные условия с помощью флага фильтрации —filter.
На момент написания этой статьи в настоящее время поддерживаются фильтры until и label. Вы можете использовать более одного фильтра, передавая несколько флагов —filter.
Например, чтобы удалить все изображения, созданные более 6 минут назад, запустите:
Удаление Docker томов
Удалить один или несколько томов
Для начала, используйте команду docker volume ls для поиска идентификатора томов. Это необходимо чтобы удалить один или несколько томов Docker.
Результат выполнения команды должен выглядеть примерно так:
Теперь выберите имя или несколько имен томов, которые вы хотите удалить и передайте их в команду docker volume rm. Например, чтобы удалить первый том, указанный в выводе выше выполните:
Если вы получаете ошибку, подобную следующей, это означает, что выбранный том используется существующим контейнером. Чтобы удалить том, придется сначала удалить контейнер.
Error response from daemon: remove 4e12af8913af888ba67243dec78419bf18adddc3c7a4b2345754b6db64293163: volume is in use — [c7188935a38a6c3f9f11297f8c98ce9996ef5ddad6e6187be62bad3001a66c8e]
Удалить неиспользуемые тома
Для удаления всех неиспользуемых томов существует команда docker volume prune:
Удаление сети Docker
Одна или несколько сетей
Перед удалением одной или нескольких сетей Docker используйте команду docker network ls, чтобы найти идентификатор сетей, которые хотите удалить.
Результат должен быть примерно таким:
После обнаружения названия сетей, передайте их идентификатор сети команде docker network rm. Например, чтобы удалить сеть с именем my-abuzov-network выполните:
Если вы получаете ошибку, подобную следующей, это означает, что сеть используется существующим контейнером. Чтобы удалить сеть, вам придется сначала удалить контейнер.
Error response from daemon: network my-abuzov-network id 6f5293268bb91ad2498b38b0bca970083af87237784017be24ea208d2233c5aa has active endpoints
Удалить неиспользуемую сеть
Используйте команду docker network prune для удаления всех неиспользуемых сетей.
Эту команду можно выполнить принудительно, используя специальный флаг -f или —force.
Удалить сети с помощью фильтров
С помощью команды docker network prune можно удалить сети по условиям, используя флаг фильтрации —filter.
На момент написания этой статьи в настоящее время поддерживаются фильтры until и label. Вы можете использовать более одного фильтра, передавая несколько флагов —filter.
Например, чтобы удалить все сети, созданные более 5 часов назад, запустите:
В этом руководстве мы показали вам некоторые общие команды для удаления контейнеров Docker, образов, томов и сетей.
Рекомендуем дополнительно проверить официальную документацию Docker. Если у вас возникли вопросы, пожалуйста, оставьте комментарий ниже.
Источник
Как удалить контейнеры, образы, тома и сети Docker
Docker — это платформа для контейнеризации с открытым исходным кодом, которая позволяет быстро создавать, тестировать и развертывать приложения в виде переносимых контейнеров, которые могут работать практически где угодно.
При работе с Docker вы можете быстро накопить большое количество неиспользуемых объектов, которые занимают значительное дисковое пространство и загромождают вывод, производимый командами Docker. Docker не удаляет неиспользуемые объекты, такие как контейнеры, изображения, тома и сети, если вы явно не укажете ему это сделать.
Эта статья служит «шпаргалкой», чтобы помочь пользователям Docker поддерживать порядок в своей системе и освобождать дисковое пространство, удаляя неиспользуемые контейнеры Docker, образы, тома и сети.
Удаление всех неиспользуемых объектов Docker
Команда docker system prune удаляет все остановленные контейнеры, зависшие образы и неиспользуемые сети:
Вам будет предложено подтвердить операцию:
Используйте параметр -f ( —force ), чтобы обойти приглашение.
Если вы хотите удалить все неиспользуемые изображения, а не только болтающиеся, добавьте к команде параметр -a ( —all ):
По умолчанию команда не удаляет неиспользуемые тома, чтобы предотвратить потерю важных данных. Чтобы удалить все неиспользуемые тома, передайте параметр —volumes :
Удаление контейнеров Docker
Контейнеры Docker не удаляются автоматически при их остановке, если вы не запустите контейнер с —rm флага —rm .
Удаление одного или нескольких контейнеров
Чтобы удалить один или несколько контейнеров Docker, используйте команду docker container rm , за которой следуют идентификаторы контейнеров, которые вы хотите удалить.
Вы можете получить список всех контейнеров , вызвав команду docker container ls с параметром -a :
Результат должен выглядеть примерно так:
Как только вы узнаете CONTAINER ID контейнеров, которые хотите удалить, передайте его команде docker container rm . Например, чтобы удалить первые два контейнера, перечисленные в выходных данных выше, вы должны запустить:
Если вы получили сообщение об ошибке, подобное показанному ниже, это означает, что контейнер запущен. Вам нужно будет остановить контейнер, прежде чем снимать его.
Удаление всех остановленных контейнеров
Чтобы удалить все остановленные контейнеры, вызовите команду docker container prune :
Если вы хотите получить список всех неработающих (остановленных) контейнеров, которые будут удалены с помощью docker container prune , используйте следующую команду:
Удаление контейнеров с помощью фильтров
Команда docker container prune позволяет удалять контейнеры в зависимости от определенного условия с помощью параметра —filter .
На момент написания этой статьи в настоящее время поддерживаются фильтры until и label . Вы можете указать более одного фильтра, используя несколько параметров —filter .
Например, чтобы удалить все изображения, созданные более 12 часов назад, вы должны запустить:
Остановите и удалите все контейнеры
Чтобы остановить все запущенные контейнеры, введите команду docker container stop а затем идентификаторы контейнеров:
Команда docker container ls -aq генерирует список всех контейнеров.
После остановки всех контейнеров удалите их с помощью команды docker container rm , а затем списка идентификаторов контейнеров.
Удаление образов Docker
Когда вы загружаете образ Docker, он сохраняется на сервере, пока вы не удалите его вручную.
Удаление одного или нескольких изображений
Чтобы удалить один или несколько образов Docker, сначала вам нужно найти идентификаторы образов:
Результат должен выглядеть примерно так:
После того, как вы найдете изображения, которые хотите удалить, передайте их IMAGE ID команде docker image rm . Например, чтобы удалить первые два изображения, перечисленные в выходных данных выше, вы должны запустить:
Если вы получили сообщение об ошибке, подобное приведенному ниже, это означает, что существующий контейнер использует изображение. Чтобы удалить изображение, вам сначала нужно удалить контейнер.
Удаление болтающихся изображений
Docker предоставляет команду удаления docker image prune которую можно использовать для удаления оборванных и неиспользуемых образов.
Оборванное изображение — это изображение, которое не помечено и не используется никаким контейнером. Чтобы удалить болтающиеся изображения, введите:
Удаление всех неиспользуемых изображений
Чтобы удалить все изображения, на которые не ссылается какой-либо существующий контейнер, а не только висячие, используйте команду prune с параметром -a :
Удаление изображений с помощью фильтров
С помощью команды docker image prune вы также можете удалять изображения в зависимости от определенного условия с параметром —filter .
На момент написания этой статьи в настоящее время поддерживаются фильтры until и label . Вы можете использовать более одного фильтра.
Например, чтобы удалить все изображения, созданные более семи дней (168 часов) назад, вы должны запустить:
Удаление томов Docker
Удаление одного или нескольких томов
Чтобы удалить один или несколько томов Docker, запустите команду docker volume ls чтобы найти ID томов, которые вы хотите удалить.
Результат должен выглядеть примерно так:
Как только вы найдете VOLUME NAME тома томов, которые хотите удалить, передайте их команде docker volume rm . Например, чтобы удалить первый том, указанный в выходных данных выше, запустите:
Если вы получаете сообщение об ошибке, подобное показанной ниже, это означает, что существующий контейнер использует том. Чтобы удалить объем, вам сначала нужно удалить емкость.
Удаление всех неиспользуемых томов
Чтобы удалить все неиспользуемые тома, выполните команду docker image prune :
Используйте параметр -f или —force чтобы обойти приглашение.
Удаление сетей Docker
Удаление одной или нескольких сетей
Чтобы удалить одну или несколько сетей Docker, используйте команду docker network ls чтобы найти идентификаторы сетей, которые вы хотите удалить.
Результат должен выглядеть примерно так:
После того как вы найдете сети, которые хотите удалить, передайте их NETWORK ID команде docker network rm . Например, чтобы удалить сеть с именем my-bridge-network , запустите:
Если вы получаете сообщение об ошибке, подобное показанной ниже, это означает, что существующий контейнер использует сеть. Чтобы удалить сеть, вы должны сначала удалить контейнер.
Удаление всей неиспользуемой сети
Используйте команду docker network prune чтобы удалить все неиспользуемые сети.
Вам будет предложено продолжить:
Удаление сетей с помощью фильтров
С помощью команды docker network prune вы можете удалять сети в зависимости от условий, используя параметр —filter .
На момент написания этой статьи в настоящее время поддерживаются фильтры until и label . Вы можете использовать более одного фильтра, используя несколько параметров —filter .
Например, чтобы удалить все сети, созданные более 12 часов назад, запустите:
Выводы
Мы показали вам некоторые из распространенных команд для удаления контейнеров, образов, томов и сетей Docker.
Вам также следует ознакомиться с официальной документацией Docker .
Если у вас есть вопросы, оставьте комментарий ниже.
Источник
Oops! Docker is showing the error unable to delete the image (must be forced). We can help you fix it.
Usually, this error shows up if a container is running in the image.
If there are no running containers we can forcefully remove the image.
At Bobcares, we often get requests to fix Docker errors, as a part of our Docker Hosting Support.
Today, our Support Engineers will provide clarification of deleting an image.
What is a Docker image and container?
Many newbies do not have a complete idea of Docker image and container. Hence, they end up in errors while building or managing it.
Docker images and containers are closely related. A running instance of an image is a container. In addition, we can have multiple running containers of one image.
Causes and fixes for the Docker error unable to delete image
Docker does not remove the used objects like containers, images, etc by its own. These unused objects can take up server space. So users remove them.
Here we will discuss the error showed up while removing a Docker image. The command to delete a Docker image is,
docker rmi
But this can often end up in the error unable to delete image must be forced. So let’s see a few instances where this error shows up.
Unable to delete an image as a container is running
Recently, one of our customers got an error while deleting an image. And the error message appeared as,
Error response from daemon: conflict: unable to remove repository reference "" (must force) - container is using its referenced image
The error message specifies that a container is using the referred image. So our Support Engineers checked the containers and images in the server.
To list the containers we use the command,
docker ps -a
And to list the images we use the command,
docker images
Then we stop the container using the command
docker stop
Later we remove the container using the command,
docker rm
Finally, remove the image using the command,
docker rmi
This successfully removes the image.
Unable to delete an image used by a stopped container
Another customer had a slightly different situation. And the error message appears as,
Error response from daemon: conflict: unable to delete (must be forced) - image is being used by stopped container
Here the image is being used by a stopped container.
Since it is a stopped container, our Support Engineers forcefully removed it. Here we used the command,
docker rmi --force
Hence, this successfully removed the image. This situation appears as,
[Still, having trouble in fixing Docker errors? – Our Experts are available 24/7.]
Conclusion
In short, Docker error unable to delete image must be forced occur if some containers are running on it. If it is a stopped container we forcefully remove it. If not we stop and remove the container and delete the image. Today, we saw two instances where our Support Engineers fixed this error.
Are you using Docker based apps?
There are proven ways to get even more out of your Docker containers! Let us help you.
Spend your time in growing business and we will take care of Docker Infrastructure for you.
GET STARTED
var google_conversion_label = «owonCMyG5nEQ0aD71QM»;
Skip to content
When tried to remove an image(hello-world) from docker, we have received below error.
docker image rm hello-world
Error response from daemon: conflict: unable to remove repository reference "hello-world" (must force) - container 2399c8b64bc8 is using its referenced image bf756fb1ae65
Reason:
Make sure that a container does not exist that is using the image. The container can be stopped and thus won’t show when when run docker ps. You can do docker container ls -a to view all running and stopped container.
docker container ls -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2399c8b64bc8 hello-world "/hello" 13 hours ago Exited (0) 13 hours ago eager_mirzakhani
Solution:
Remove the stopped container and then remove the image as shown below.
docker container rm 2399c8b64bc8 docker image rm hello-world
КАК УДАЛИТЬ ДОКЕР ОБРАЗЫ И КОНТЕЙНЕРЫ?
Запущенные образы и контейнеры без угрызения совести занимают ресурсы компьютера, даже тогда, когда Вы их уже не используете. Поэтому, чтобы не грузить машину лишними прожорливыми «хвостами», рекомендуется своевременно закрыть или удалить докер образы и контейнеры, ставшие ненужными.
Так как контейнер является работающим приложением, построенным на основе образа, то перед удалением образа, необходимо закрыть все созданные на его основе контейнеры. Прежде, чем мы рассмотрим команды, позволяющие это сделать, предлагаю взглянуть на полезные флаги, упрощающие процесс удаления:
При удалении контейнеров и образов, мы будем добавлять к командам флаги: -a и -q.
Флаг -a эквивалентен — -all и означает, что нужно применить команду ко всем элементам
Флаг -q эквивалентен — — quiet и позволяет получить только идентификаторы элементов
УДАЛЯЕМ КОНТЕЙНЕРЫ
1.Узнаем ID контейнера или контейнеров, которые нужно закрыть
Для удаления контейнера нам нужно знать его идентификатор. Получить информацию о всех созданных контейнерах можно с помощью команды:
<strong>docker ps -a</strong>
Идентификаторы контейнеров выведены в столбце CONTAINER ID:
2. Удаляем один или несколько контейнеров
Для удаления контейнеров существует команда:
<strong>docker rm</strong> <<strong>ID контейнера</strong> <strong>или ID нескольких контейнеров, записанных через пробел</strong>>
ПРИМЕРЫ УДАЛЕНИЯ КОНТЕЙНЕРОВ:
- Рассмотрим пример удаления контейнера с ID=b3026c5a9fa5. В данном случае потребуется ввести:
docker rm b3026c5a9fa5
- Для удаления двух контейнеров с идентификаторами: 5b712b5f26f4 и 7с3860367367, потребуется ввести:
docker rm 5b712b5f26f4 7с3860367367
3. Удаляем все контейнеры
Чтобы закрыть все контейнеры одной командой, введите:
<strong>docker rm $(docker ps -a -q)</strong>
УДАЛЯЕМ ОБРАЗЫ ДОКЕРА
1. Узнаем имена и идентификаторы образов, которые нужно закрыть
Для того, чтобы получить информацию о запущенных образах, нужно ввести команду:
<strong>docker images</strong>
В столбце «REPOSITORY» можно узнать имя, а в столбце «IMAGE_ID» — идентификатор образа, который нужно закрыть.
2. Удаляем один или несколько образов
Для удаления одного или нескольких образов, нужно ввести команду:
<strong>docker rmi</strong> <<strong>имя или ID одного или нескольких образов, записанных через пробел</strong>>
ПРИМЕРЫ УДАЛЕНИЯ ОБРАЗОВ:
- Например, для удаления образа по имени «tort», наберем:
docker rmi tort
- А для удаления двух образов с именами «tort» и «ubuntu», введем:
docker rmi tort ubuntu
Если при удалении образа возникает подобная ошибка:
Error response from daemon: conflict: unable to remove repository reference «tort» (must force) — container ee130eb8eaf5 is using its referenced image 60a325a15a7e, это значит, что Вы поспешили с закрытием образа, забыв предварительно удалить связанные с этим образом контейнеры. О том, как удалить контейнеры, смотрите информацию выше, в предыдущем разделе статьи.
4. Удаляем все образы
Для удаления всех образов введем команду:
docker rmi $(docker images -q)
Если при удалении образов возникнут подобные ошибки:
Error response from daemon: conflict: unable to delete 51d053942024 (must be forced) — image is referenced in multiple repositories
или такие:
Error response from daemon: conflict: unable to delete b0d6bcf625c7 (cannot be forced) — image has dependent child images
Тогда можно:
1.Удалить образ принудительно, добавив к командам удаления флаг -f:
docker rmi <имя или ID образа> -f
2.Удалить все образы принудительно:
docker rmi $(docker images -q) -f
Как известно, «чистота — залог здоровья»! Поэтому будем считать, что удалив ненужные образы и контейнеры докера, мы выполнили миссию компьютерного доктора и добавили здоровья своей рабочей лошадке!
I’ve had to brush up my Docker skills again due to some side projects I’m working on. So I ran into some basic issues I wanted to elaborate on. In this blog post: “image is referenced in multiple repositories.”
I had to remove a Docker image from my machine using the rmi command.
To my surprise, I was unable to delete the image. The following error was thrown:
Error response from daemon: conflict: unable to delete <image ID> (must be forced) - image is referenced in multiple repositories
For example, this can happen when you have an image that is referenced by multiple tags or multiple names. In the following example, I created two mirrors of redis.
docker pull redis:latest docker tag redis:latest redis:my_new_tag docker tag redis:latest redis_mirror:latest
The result is:
When you try to remove the image by ID, Docker does not know which image (mirror) you are referring to. There are two ways one can tackle this.
Instead of trying to remove the image using its image id, you’ll have to remove all repositories individually, by referencing them with their name and tag. The last one can be removed by referring to the image ID.
docker rmi redis:my_new_tag rocker rmi redis_mirror docker rmi 881
But there is also a faster solution. You can force docker to remove an image. By using the -f flag and the image’s (short or long) ID, the image gets untagged and is removed. Like this:
And that’s how it’s done.
Say thanks, ask questions or give feedback
Technologies get updated, syntax changes and honestly… I make mistakes too. If something is incorrect, incomplete or doesn’t work, let me know in the comments below and help thousands of visitors.