Как использовать docker remote api для создания контейнера?

Я новичок в докере. Я прочитал учебник в удаленном API-интерфейсе docker. В аспекте создания контейнера. Это показывает мне слишком много параметров для заполнения. Я хочу знать, что эквивалентно этой команде:

docker run -d -p 5000: 5000 --restart = always - имя реестра реестр:. 2

Я понятия не имею об этом. Может ли кто-нибудь сказать мне? Спасибо!

Ответ 1

Оригинальный ответ (июль 2015 г.):

Это будет (не проверено напрямую), как в этом учебнике (при условии удаленный API включен):

Сначала создайте контейнер:

curl -v -X POST -H "Content-Type: application/json" -d '{"Image": " registry:2.",}' http://localhost:2376/containers/create?name=registry

Затем запустите его:

curl -v -X POST -H "Content-Type: application/json" -d '{"PortBindings": { "5000/tcp": [{ "HostPort": "5000" }] },"RestartPolicy": { "Name": "always",},}' http://localhost:2376/containers/registry/start?name=registry

Обновить февраль é017 для докеров 1.13+ см. rocksteady , используя аналогичную идею, но с текущим engine/api/v1.26.

Ответ 2

Более или менее простое копирование VonC ответ для обновления до сегодняшней версии docker (1.13) и версия удаленной api-версии док-станции ( v1.26).

Что другое:

  • Вся конфигурация должна быть выполнена при создании контейнера, в противном случае при запуске контейнера возвращается сообщение об ошибке VonC. {"message":"starting container with non-empty request body was deprecated since v1.10 and removed in v1.12"}

Сначала создайте контейнер: (включая всю конфигурацию) curl -v -X POST -H "Content-Type: application/json" -d @docker.conf http://localhost:2376/containers/create?name=registry Файл docker.conf выглядит следующим образом:

{
  "Image": registry:2.",
  "ExposedPorts": {
    "5000/tcp": {}
  },
  "HostConfig": {
    "PortBindings": {
      "5000/tcp": [
        {
          "HostPort": "5000"
        }
      ]
    },
    "RestartPolicy": {
      "Name": "always"
    }
    "AutoRemove": true
  }
}

Затем запустите его: (параметр name не нужен, контейнер называется только реестр). curl -v -X POST -H "Content-Type: application/json" http://localhost:2376/containers/registry/start

Ответ 3

Создать Docker-контейнер в Docker Engine v1.24

Выполнить почтовый запрос -

 curl -X POST  -H "Content-Type: application/json" http://DOCKER_SERVER_HOST:DOCKER_PORT/v1.24/containers/create?name=containername

В теле запроса вы можете указать параметры JSON, такие как

{
        "Hostname": "172.x.x.x",
        "Image": "docker-image-name",
        "Volumes": "",
        "Entrypoint": "",
        "Tty": true
}

Создает ваш докер контейнер

Запустить контейнер

Выполнить запрос POST

curl -X POST  http://DOCKER_SERVER_HOST:DOCKER_PORT/v1.24/containers/containername/start

Ссылочная ссылка - https://docs.docker.com/engine/api/v1.24/