Это ожидаемое поведение. 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.