我拥有一台 Mac M1,我在上面运行 Docker。 在 OSX 上,Docker 可以运行本机 ARM 映像,但也可以模拟 x86/amd64 来运行不是为 ARM 构建的映像。
从命令行中,如何找到显示图像platform的命令“docker image ls”的扩展?
$ docker image ls
REPOSITORY TAG **PLATFORM** IMAGE ID CREATED SIZE
.............................arm64
.............................x86
我已经看到这个答案:How to filter Docker images by platform?但它没有回答问题。操作系统和平台是两个不同的东西。
这是您要找的吗?
docker image inspect --format "{{.ID}} {{.RepoTags}} {{.Architecture}}" $(docker image ls -q)
输出:
sha256:fb495265b81ffaa0d3bf8887231b954a1139b2e3d611c3ac3ddeaff72313909c [postgres:10.11-alpine] amd64
说明:
$(docker image ls -q)
→ 将所有图像 ID 作为参数传递给检查命令docker image inspect
打印有关图像的详细信息
--format "{{.ID}} {{.RepoTags}} {{.Architecture}}"
→ 仅打印必要的数据而不是完整的 JSON还可以使用
grep
添加管道,例如 {inspect command} | egrep 'amd64$'
仅打印 amd64
架构
尝试将
docker image
与 jq
结合起来:
docker image inspect \
$(docker images -q) \
| jq -r '.[] | select(.Architecture=="arm64").RepoTags[]'