我目前正在构建图像,并用提交哈希标记它们。然后,我拉出该图像并运行它(通过提交哈希或latest标记)。我如何从正在运行的镜像内部找出提交哈希?
我目前所知道的只是容器hostname。因此,如果容器正在运行,我可以获取摘要:

docker inspect --format='{{.Config.Image}}' hostname
然后从摘要中,我可以在Dockerhub上搜索以找到链接到摘要的标签(不确定如何操作),然后标签具有链接到其的提交哈希。
不幸的是,如果容器仍未激活,则会出现错误:
Error: No such object: hostname
还有其他方法吗?

最佳答案

您可以尝试的选项之一是在环境变量中设置commit hash,因此您也可以从图像中获取ENV

docker --build-arg GIT_COMMIT=$(git rev-parse HEAD) my_image:$(git rev-parse HEAD)
和Dockerfile
FROM alpine
ARG GIT_COMMIT
ENV GIT_COMMIT=$GIT_COMMIT
现在您可以从env获取GIT_COMMIT
echo "${GIT_COMMIT}"

10-08 18:24