我正在尝试删除图像,但得到:
# docker rmi f50f9524513f
Failed to remove image (f50f9524513f): Error response from daemon: conflict: unable to delete f50f9524513f (cannot be forced) - image has dependent child images
这是docker版本:
# docker version
Client:
Version: 1.10.3
API version: 1.22
Go version: go1.5.3
Git commit: 20f81dd
Built: Thu Mar 10 21:49:11 2016
OS/Arch: linux/amd64
Server:
Version: 1.10.3
API version: 1.22
Go version: go1.5.3
Git commit: 20f81dd
Built: Thu Mar 10 21:49:11 2016
OS/Arch: linux/amd64
但没有其他信息:
# docker images --format="raw" | grep f50f9524513f -C3
repository: debian
tag: 8
image_id: f50f9524513f
created_at: 2016-03-01 18:51:14 +0000 UTC
virtual_size: 125.1 MB
repository: debian
tag: jessie
image_id: f50f9524513f
created_at: 2016-03-01 18:51:14 +0000 UTC
virtual_size: 125.1 MB
如何获得它声称拥有的 依赖子图像 ?
没有运行或停止的具有该图像ID的容器。
简短的答案:
这是一个python3脚本,其中列出了相关的docker映像。
长答案: 您可以看到在有问题的图像之后创建的所有图像的图像ID和父ID,如下所示:
docker inspect --format='{{.Id}} {{.Parent}}' \
$(docker images --filter since=f50f9524513f --quiet)
您应该能够查找具有父ID的图像(以f50f9524513f开头),然后查找 这些 图像的子图像,等等。 但这 .Parent
并不是您所想的。,因此在大多数情况下,您需要在docker images --all
上面进行指定以使其正常工作,然后您还将获得所有中间层的图像ID。
这是一个更有限的python3脚本,用于解析docker输出并进行搜索以生成图像列表:
#!/usr/bin/python3
import sys
def desc(image_ids, links):
if links:
link, *tail = links
if len(link) > 1:
image_id, parent_id = link
checkid = lambda i: parent_id.startswith(i)
if any(map(checkid, image_ids)):
return desc(image_ids | {image_id}, tail)
return desc(image_ids, tail)
return image_ids
def gen_links(lines):
parseid = lambda s: s.replace('sha256:', '')
for line in reversed(list(lines)):
yield list(map(parseid, line.split()))
if __name__ == '__main__':
image_ids = {sys.argv[1]}
links = gen_links(sys.stdin.readlines())
trunc = lambda s: s[:12]
print('\n'.join(map(trunc, desc(image_ids, links))))
如果将其保存为desc.py
您可以按以下方式调用它:
docker images \
| fgrep -f <(docker inspect --format='{{.Id}} {{.Parent}}' \
$(docker images --all --quiet) \
| python3 desc.py f50f9524513f )
或只是使用上述要点,即可完成相同的操作。
我试图删除一个图像,我得到: 这是docker版本: 但没有额外的信息: 我如何才能获得它声称拥有的从属子映像? 没有具有该映像id的正在运行或已停止的容器。
我正在基于Centos创建docker映像: 有没有一种方法,我可以得到一个列表的文件/目录安装在图像中,超过最初的centos起始图像?
我是Docker的新手,正在尝试使用101-tutorial Docker映像(https://github.com/dockersamples/101-tutorial)了解Docker 在本课中,他们试图解释当两个容器实例从同一映像运行时,第一个容器创建的数据在默认情况下在第二个容器中不可用(除非我们使用容器卷和装入等)。 第1和第2点显示一个ubuntu容器正在运行,并且有一个名为data.
问题内容: 假设我有一个docker映像,并将其部署在某些服务器上。但是我不希望其他用户访问该图像。是否有加密docker映像的好方法? 问题答案: 实际上,不,如果用户有权运行docker守护程序,那么他们将有权访问所有图像-这是由于docker要求更高的权限才能运行。 有关为什么这样做的更多信息,请参阅Docker安全指南的摘录。 Docker守护程序攻击面 使用Docker运行容器(和应用程
问题内容: 我正在使用docker Registry v1,并且有兴趣迁移到较新的版本v2。但是我需要某种方式来获取注册表中存在的图像列表。例如,对于注册表v1,我可以执行GET请求,结果是: 但是我在官方文档中找不到类似于在注册表中获取映像列表的内容。有人知道在新版本v2上执行此操作的方法吗? 问题答案: 对于最新(截至2015年7月31 日)的Registry V2版本,您可以从DockerH