При использовании Docker API не удается создать образ - PullRequest
1 голос
/ 22 октября 2019

Я пытаюсь создать контейнер с помощью Docker API. Я бегу:

 sudo curl \
     -XPOST --unix-socket /var/run/docker.sock \
     -d '{"Image":"nginx"}' \
     -H 'Content-Type: application/json' \
     http://localhost/containers/create

, но вместо этого я получаю это сообщение:

{"message":"No such image: nginx:latest"}

Разве изображение не должно быть загружено, если его еще нет?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 22 октября 2019

Это ожидаемое поведение. API REST для создания контейнеров очень пошаговый, а команда 'docker run' выполняет несколько операций.

Используя strace, вы можете увидеть некоторые из запросов POST, которые он отправляет API, дажедля простого docker run hello-world, в том числе:

POST /v1.40/containers/create
POST /v1.40/images/create
POST /v1.40/containers/create
POST /v1.40/containers/[hash]/attach
POST /v1.40/containers/[hash]/wait
POST /v1.40/containers/[hash]/start

Когда первый запрос на создание не выполняется, он перемещается вперед и вытягивает изображение, а затем повторно запускает создание. Также необходимо позаботиться о присоединении и запуске контейнера. Вам нужно будет имитировать соответствующие операции для собственного использования API.

Справочник по API даже вызывает это:

Большинство команд клиентасопоставить напрямую с конечными точками API (например, docker ps - это GET /containers/json). Заметным исключением является запуск контейнеров, который состоит из нескольких вызовов API.

0 голосов
/ 22 октября 2019

хорошо, так что это ожидаемое поведение в соответствии с: https://github.com/moby/moby/issues/30658

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...