Получение конфигурации контейнера образа Docker с помощью API реестра - PullRequest
0 голосов
/ 13 июня 2018

В CLI я могу сделать docker inspect --type image {some_image}, и часть ответа:

"ContainerConfig": {
    "Hostname": "4beccaca9c40",
    "Domainname": "",
    "User": "",
    "AttachStdin": false,
    "AttachStdout": false,
    "AttachStderr": false,
    "Tty": false,
    "OpenStdin": false,
    "StdinOnce": false,
    "Env": [
        "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
    ],
    "Cmd": [
        "/bin/sh",
        "-c",
        "#(nop) ",
        "CMD [\"/bin/sh\" \"-c\" \"cat /marker\"]"
    ],
    "ArgsEscaped": true,
    "Image": "sha256:111ecb4a6197242745f0d74c2ca4e377cfe4a1686b33160d3a8df3d3d1baea58",
    "Volumes": null,
    "WorkingDir": "",
    "Entrypoint": null,
    "OnBuild": null,
    "Labels": {
        "key1": "LabelValue1-L2",
        "version": "1.2.0"
    }
},

API реестра определяет тип ответа

  • application / vnd.docker.container.image.v1 + json: Конфигурация контейнера JSON

, но я не могу связать это с конкретным API.Когда я использую его с URL-адресом ../manifests/.., я получаю ответ в формате по умолчанию (application/vnd.docker.distribution.manifest.v1+json) (это также происходит, если я пытаюсь использовать формат «толстый манифест»).

Является ли эта информация о конфигурациидоступно где-нибудь?

Реестр - это стандартный образ реестра, извлеченный пару дней назад (говорит "Created": "2018-01-10T01:22:39.470942376Z")

1 Ответ

0 голосов
/ 28 июля 2018

Итак, что требуется:

  • Первый вызов https://{registry}/v2/{imageName}/manifests/{tag} с заголовком Accept, установленным на application/vnd.docker.distribution.manifest.v2+json

    Возвращает JSONгде config.mediaType установлен на тип содержимого манифеста V1 (насколько я могу судить, это всегда application/vnd.docker.container.image.v1+json.

  • второй вызов https://{registry}/v2/{imageName}/manifests/{tag} сзаголовок Accept, установленный для типа содержимого, полученного выше (тот же URL, только изменения Accept).

    Возвращает JSON, где член history является списком, а каждый членэтот список имеет единственный атрибут v1Compatibility, представляющий собой строку, которую можно повторно проанализировать как JSON.

...