Подход 1 - API механизма Docker
Вы можете получить информацию об изображении с помощью Docker Engin API: Получить информацию об изображении из реестра
Например, вам нужночтобы получить информацию о платформе для изображения openjdk
с тегом 10.0.1-jdk-windowsservercore-1709
, вы можете вызвать API механизма докера, как показано ниже:
curl --unix-socket /var/run/docker.sock "http://v1.39/distribution/openjdk:10.0.1-jdk-windowsservercore-1709/json"
PS: v1.39 - это моя версия докера, вы должны заменить ее в соответствии св вашу среду докера.
Ответ:
{
"Descriptor":{
"mediaType":"application/vnd.docker.distribution.manifest.list.v2+json",
"digest":"sha256:8394bc010c538ffc5f56386466a728d205edd70317bd320aa44e50c8533a229a",
"size":480
},
"Platforms":[
{
"architecture":"amd64",
"os":"windows",
"os.version":"10.0.16299.547"
}
]
}
Поле Platforms
должно быть тем, что вам нужно:
Массив, содержащий все платформы, поддерживаемыеimage
Существует документ , описывающий, как вызвать API механизма докера.
Подход 2 - API реестра Docker
Для вызова докераAPI реестра, вам просто нужен http-клиент, например.curl
, док-клиент не требуется.
1.Получите токен авторизации.
Для получения более подробной информации см. Спецификация аутентификации токена .
Например, вам необходимо выполнить запрос к изображению library/openjdk
curl --url "https://auth.docker.io/token?service=registry.docker.io&scope=repository:library/openjdk:pull"
scope
поле указывает, какое image
необходимо запросить при вызове API подпоследовательности.
Ответ:
{"token": "eyJhb......"}
Сохраните token
из ответа выше.
2.Получить манифест изображения
Ссылка:
2.1. HTTP-интерфейс Docker Registry V2 # manifest
2.2. Основной файл изображения
Например, вам нужно получить манифест изображения openjdk
с тегом 10.0.1-jdk-windowsservercore-1709
, затем вы можете сделать запрос, подобный этому:
curl -H "Accept: application/vnd.docker.distribution.manifest.list.v2+json" -H "Authorization: Bearer eyJh..." --url "https://registry.hub.docker.com/v2/library/openjdk/manifests/10.0.1-jdk-windowsservercore-1709"
Примечание : замените поле заголовка Authorization
токеном, полученным на шаге 1. Не забудьте вставить префикс перед токеном с Bearer
Ответ:
{
"schemaVersion": 2,
"mediaType": "application/vnd.docker.distribution.manifest.list.v2+json",
"manifests": [
{
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"size": 2825,
"digest": "sha256:c8a1d8756ae34cdf361da263ed3f7ef98b7dc3718d5e445e8e6bd277989a4bde",
"platform": {
"architecture": "amd64",
"os": "windows",
"os.version": "10.0.16299.547"
}
}
]
}
Поле manifests[i].platform.os
должно быть тем, что вам нужно.