“docker stack deploy”:docker 镜像在哪里?

问题描述

我创建了一个 docker compose *.yml 文件,其中有许多带有指定图像标签的服务。然后我让 docker 使用 docker stack deploy -c .\my-compose-file.yml --with-registry-auth dev 为我(在我的本地机器上)部署一个堆栈,它能够运行所有服务。当我同时运行 docker events 时,我可以在日志中看到 image pull 消息,因此 docker 会提取丢失的图像。但是当我运行 docker image ls -a 时,这里没有显示提取的图像。

所以我想知道并想知道下载的图像有什么实时周期(然后在我执行 docker stack rm 或不执行时将从我的驱动器中删除),如果没有,我该如何清理这些图像?

解决方法

我假设您已配置多节点群。在这种情况下,docker image ls 仅在您的本地机器上运行,而堆栈中的容器分布在各个节点上。图像被拉到将运行容器的节点上。

要获取容器列表,您需要前往 swarm 的每个成员并发出命令。简单的方法是使用,假设您可以使用身份密钥通过 ssh 访问节点:

docker node ls | cut -c 31-49 | grep -v HOSTNAME | xargs -I"SERVER" sh -c "echo SERVER; ssh SERVER /usr/local/bin/docker image ls -a"

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...