为啥“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”不能删镜像?的主要内容,如果未能解决你的问题,请参考以下文章

docker镜像为啥有自己的ip

Windows7系统安装docker,每次pull远程仓库镜像到本地,为啥总会生成两个一样的镜像文件?

为啥 pytorch Docker 镜像没有自带torch?

为啥Docker官方镜像不按照“最佳实践”的要求使用USER

Docker之镜像管理常用命令

为啥 docker 必须从 dockerfile 创建一个镜像,然后从该镜像创建一个容器,而不是从 Dockerfile 创建一个容器?