我想在本地删除给定 Docker 存储库上的所有标签。例如,如果我在一个名为“my_image:latest”和“my_image:sometag”的存储库上有两个标签,我想删除这两个标签。但是,我不想删除“another_image:latest”。
有没有办法指示docker swarm自动运行垃圾收集并删除所有悬空图像和容器?我运行docker stack rm STACK_NAME并重新部署堆栈,但这会保留未使用的对象.我知道我可以运行docker prune来进行清理,但有没有办法指示docker自动执行此操作?
PS我尝试根据这篇文章设置历史保留限制
当我想删除所有容器时,我看到了那个错误
命令:
docker rm $(docker ps -aq)
Run Code Online (Sandbox Code Playgroud)
错误是:
Error response from daemon: driver "overlay2" failed to remove root filesystem for 4bf2fc329d2fab3c055dd136a740c5ee2000e35e26fea6a38c94801fd8dfb109: remove /var/lib/docker/overlay2/7991f36adaa25d4046ef6106c3da8bbbb1f3ce7478b07a30021669a7783b4b6c/diff/root/.ipython: read-only file system
Run Code Online (Sandbox Code Playgroud)
我也试过
docker rm -f $(docker ps -aq)
Run Code Online (Sandbox Code Playgroud)
但结果是一样的
我也试过删除该图像:
docker rmi -f <images_id>
Run Code Online (Sandbox Code Playgroud)
结果是一样的。
如何删除容器?
我在 gitlab 的项目中有一个 ci/cd 自动化,在将我的代码推送到 master 分支后,gitlab 运行程序在我的服务器上创建一个新的 docker 映像,并将最新提交哈希设置为该映像上的标签,并使用新映像重新创建容器。一段时间后,有很多未使用的图像,我想自动删除它们。
我手动删除旧图像。
这是我的 Makefile
NAME := farvisun/javabina
TAG := $$(git log -1 --pretty=%h)
IMG := ${NAME}:${TAG}
LATEST := ${NAME}:latest
app_build:
docker build -t ${IMG} -f javabina.dockerfile . && \
docker tag ${IMG} ${LATEST}
app_up:
docker-compose -p farvisun-javabina up -d javabina
Run Code Online (Sandbox Code Playgroud)
毕竟,我想要一个简单的 bash 代码或其他工具来删除未使用的图像,例如保留 3 个最新图像,或保留过去 2 天的构建,并删除其他图像。
我们有一个系统,用户可以在其中安装一些docker容器.我们没有限制他可以安装的东西.一段时间后,我们需要清理 - 删除群中未使用的所有图像.
使用docker远程API的解决方案是什么?
我们的想法是拥有背景图像 - 垃圾收集器线程:
这有意义吗?这会以某种方式影响群体吗?
我正在使用docker从docker文件构建图像.在此过程中发生了一些错误,因此构建退出时出现错误代码.
当我跑步时,docker images我可以看到无标记的图像.所以我试图删除它docker rmi xxxxx.但它总是失败,它说图像无法删除,因为它被停止的容器使用.
所以我深入挖掘一下.我运行docker ps -a,现在我可以看到在构建过程失败时创建的已停止容器的长列表.
为什么会有容器创建?我认为图像就像编程中的"类"概念,而容器是类的实例.在成功构建映像之前,为什么会创建实例?如何在没有所有停止的容器的情况下构建映像?
我使用以下命令删除所有 docker 容器:
docker ps -q | xargs docker stop
docker ps -aq --no-trunc -f status=exited | xargs docker rm
Run Code Online (Sandbox Code Playgroud)
但无论如何我看到容器之后:
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
70cb7107d00d 24820714bfc6 "wait-for-it.sh mysqâ¦" 21 minutes ago Created sql_migration
Run Code Online (Sandbox Code Playgroud)
然后我执行了命令
docker rm sql_migration
Run Code Online (Sandbox Code Playgroud)
它移除了容器。
您能否帮助更正初始命令并解释为什么它不起作用。
另外,如果您解释如何将容器更改为状态,我将不胜感激 sql_migration
我跑的时候
docker rmi $(docker images --filter "dangling=true" -q --no-trunc)
Run Code Online (Sandbox Code Playgroud)
从我接受的这个问题的答案我有时得到
docker: "rmi" requires a minimum of 1 argument.
Run Code Online (Sandbox Code Playgroud)
难道我做错了什么?我怎样才能防止这种情况发生?
当我docker-compose build由于在Dockerfile中进行了更改而在Docker中运行命令以重建映像时,有时会收到“无”映像标签。我们如何避免这个事实?我想重建图像,但不显示任何图像。
REPOSITORY TAG IMAGE ID CREATED SIZE
magento2 latest b4dce4dcbd4f 16 hours ago 516MB
<none> <none> b4ffce2bf91e 16 hours ago 519MB
<none> <none> a1aedb60c82a 17 hours ago 516MB
<none> <none> ec9a14ae856c 20 hours ago 519MB
<none> <none> ef8eba6874cc 23 hours ago 516MB
<none> <none> 0e53a8b8c303 23 hours ago 516MB
php 7.1-apache 93e6fb4b13e1 3 weeks ago 369MB
mysql 5.6.39 079344ce5ebd 7 months ago 256MB
Run Code Online (Sandbox Code Playgroud) 我的服务器磁盘空间不足,并docker images显示了6个月前但2年前的一些容器。我想删除所有8个月以上的邮件。我可以添加什么魔术来docker rmi $(MAGIC)完成此任务?