为啥“docker”不能删镜像?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥“docker”不能删镜像?相关的知识,希望对你有一定的参考价值。
参考技术A 有依赖该image的container,先删除container再删除image\\x0d\\x0a删除命令\\x0d\\x0adocker ps -a | grep "Exited" | awk \'print $1 \'|xargs docker stop\\x0d\\x0a\\x0d\\x0adocker ps -a | grep "Exited" | awk \'print $1 \'|xargs docker rm\\x0d\\x0adocker images|grep none|awk \'print $3 \'|xargs docker rmi\\x0d\\x0a这样清空掉残余的容器后,再删除images就没有异常的提示了。为啥Docker官方镜像不按照“最佳实践”的要求使用USER
【中文标题】为啥Docker官方镜像不按照“最佳实践”的要求使用USER【英文标题】:Why do Docker official images not use USER as required by "best practices"为什么Docker官方镜像不按照“最佳实践”的要求使用USER 【发布时间】:2016-03-21 17:34:29 【问题描述】:Postgres、mariadb、mysql 不使用 USER。据说官方图像会被审查以遵守最佳实践文件,requiresUSER 在可能的情况下。为什么?
【问题讨论】:
【参考方案1】:从根本上说,USER 在官方图像中是不可能的。它与“初学者应该能够docker run official-image bash
而无需了解--entrypoint”的要求相冲突。如果您没有 root,则无法编辑配置文件、安装诸如 strace 之类的软件包……或者特别是修复卷中的 UID。实际上,官方图像样式 被认为是 (a) 最佳实践。 (所以 Docker 用户指南应该强调以非 root 身份运行守护进程,而不是特别强调 USER)
IMO 这是一个问题。您可以从中学习的流行示例并未显示设置固定 UID 的必要性。否则,如果您使用添加另一个用户的基本映像进行更新,则必须手动干预。最佳实践说您应该考虑设置固定的 UID,但他们甚至没有显示它的示例。所以prominent 使用 USER 的simple Dockerfiles 示例没有设置固定的 UID。官方图像也没有设置固定的 UID - 假装这样不是问题 - 但随后使用 chown
暴力破解数据卷,因为它们的入口点脚本以 root 身份运行。不是很令人印象深刻。
从技术上讲,可以通过向 Dockerfile 添加更多 chown
和 UID 交换来修复官方 Dockerfile,但这似乎不可取。
我想另一种选择是路径相关的更新。也就是说,保留chown
,直到每个人都完成对固定 UID 的自动更新(几个月?),然后删除它。
【讨论】:
以上是关于为啥“docker”不能删镜像?的主要内容,如果未能解决你的问题,请参考以下文章
Windows7系统安装docker,每次pull远程仓库镜像到本地,为啥总会生成两个一样的镜像文件?
为啥 pytorch Docker 镜像没有自带torch?
为啥Docker官方镜像不按照“最佳实践”的要求使用USER
为啥 docker 必须从 dockerfile 创建一个镜像,然后从该镜像创建一个容器,而不是从 Dockerfile 创建一个容器?