Удален старый ответ, потому что он был неверным.
Project Atomic имеет инструмент под названием " skopeo ", который делает то, что вы хотите. Вот ссылка на репозиторий github
После того, как вы установили инструмент, вы должны просто сделать:
$ skopeo inspect docker://docker.io/microsoft/nanoserver | jq '.Os'
"windows"
$ skopeo inspect docker://docker.io/library/ubuntu | jq '.Os'
"linux"
Справка:
Если вы посмотрите на информацию об изображении докера, доступную под /var/lib/docker/image/<storage-driver>/imagedb/content/sha265/<image-sha>
, вы обнаружите, что она выглядит примерно так:
{
"architecture": "amd64",
"config": {
...
},
"container": "6e8eb576ec0f7564a85c0fbd39824e0e91c031aa0019c56c5f992449e88d1142",
"container_config": {
...
},
"created": "2018-03-06T22:17:26.531075062Z",
"docker_version": "17.06.2-ce",
"history": [
...
],
"os": "linux",
"rootfs": {
"type": "layers",
"diff_ids": [
"sha256:a94e0d5a7c404d0e6fa15d8cd4010e69663bd8813b5117fbad71365a73656df9",
"sha256:88888b9b1b5b7bce5db41267e669e6da63ee95736cb904485f96f29be648bfda",
"sha256:52f389ea437ebf419d1c9754d0184b57edb45c951666ee86951d9f6afd26035e",
"sha256:52a7ea2bb533dc2a91614795760a67fb807561e8a588204c4858a300074c082b",
"sha256:db584c622b50c3b8f9b8b94c270cc5fe235e5f23ec4aacea8ce67a8c16e0fbad"
]
}
}
Как видите, доступно поле с именем os
, которое говорит linux
. Я подозреваю, что если вы посмотрите на это поле для изображения Windows, оно скажет windows
. Эта информация доступна через docker inspect
.
Хитрость в том, чтобы выяснить, какие API-вызовы нужно сделать для docker.io
, чтобы получить эту информацию. API докера-концентратора / реестра немного недокументированы, и не совсем очевидно, откуда эта информация. Предоставление этой информации простым способом, по-видимому, является открытой ошибкой:
Предложение: проверить изображение json в реестре