当前位置: 首页 > 知识库问答 >
问题:

从容器中获取docker图像摘要/哈希

谷梁宜
2023-03-14

我知道可以访问docker api,下面的命令运行得很好:
curl-s--unix socket/var/run/docker。sock http:/v1。24/containers/$HOSTNAME/json |jq-r'。图片“

然而,我真的希望避免暴露docker。sock与容器本身绑定,因为它是CI构建的一部分。是否有其他方法可以从容器本身中检索容器图像id/哈希(即2acdef41a0c),而不暴露docker。袜子并向它发出卷曲请求?

也许就像这里显示的Docker一样,如何从容器中获取容器信息?

共有3个答案

贡斌
2023-03-14

在容器内运行以下命令应该会给出容器ID或docker映像hash-cat /proc/self/cgroup|head-n 1|Cut-d'/'-f3|Cut-c 1-12

罗飞宇
2023-03-14

与@Shayk response相同,但使用docker SDK(python)https://docker-py.readthedocs.io/

import docker
....
client = docker.from_env()
image_name = "ubuntu:bionic"
image_id = str(client.images.get(image_name).id).split(":")[1][:12]

container = client.containers.run(image_name, 
    network = "host",
    environment=[f"IMAGE_ID={image_id}",f"IMAGE_NAME={image_name}"],
    detach=True)

秦宏硕
2023-03-14

这将在容器内设置图像环境变量:

docker run --rm -it -e IMAGE=$(docker images ubuntu:bionic --format {{.ID}}) ubuntu:bionic
 类似资料:
  • 问题内容: 我正在编写一个Java网络服务,该网络服务从网络中的某些客户端使用iText对PDF文档进行签名。文档已正确签名,可以使用外部工具进行验证。但是,由于某些法律限制,为了将此文档存储在正式的文档库中,我必须提供签名中的哈希/摘要消息。 我已经尝试了几乎所有方法来获取该哈希,但是我可以获取的最接近的方法是使用此代码段将整个签名(CERT + HASH / DIGEST + TIMESTAM

  • 问题内容: 从容器名称获取docker容器ID的命令是什么? 问题答案: 在Linux中: 或在OS X,Windows中: 您的容器名称在哪里。 如@llia Sidorenko所述,为避免产生误报,您可以使用正则表达式锚点,如下所示: 说明: 为了安静。仅输出ID 对所有人。即使您的容器未运行也能正常工作 用于过滤器。 容器名称必须以该字符串 开头 容器名称必须 结束 这个字符串

  • 从容器名称中获取Docker容器id的命令是什么?

  • 我正在编写一个Java web服务,它使用来自网络中一些客户端的iText对PDF文档进行签名。文档的签名正确,可以使用外部工具进行验证。然而,由于一些法律限制,为了将此文档存储在一个正式的文档存储库中,我必须提供来自签名的散列/摘要消息。 我已经尝试了几乎所有的方法来获得那个散列,但我能得到的最接近的方法是用下面的代码段以字符串的形式获得整个签名(证书+散列/摘要+时间戳)(请原谅字符串和[1]

  • 让我们以whalesay图片为例<代码>docker history显示以下内容: 我想提取显示为的层。有这样做的工具/方法吗?

  • 我们正在构建docker映像,并在docker构建期间添加一些元数据标签,例如: 当我们稍后在kubernetes吊舱中使用此图像时,我们希望从kubernetes api检索该标签。这对于跟踪图像标记本身中编码的内容以外的其他元数据非常有用。 标签可以通过节点上的docker获得,但我找不到任何方法在kubernetes中检索它们。这可能吗?