Демон Docker предоставляет API Remote REST. Этот API используется Клиентом для связи с движком. Этот API также может быть вызван другими инструментами, такими как curl или Chrome Postman REST Client .
Если вы создаете демоны Docker с помощью Docker Machine на OSX Mavericks, то заставить этот API работать немного сложнее. Этот блог расскажет, как включить Docker Remote API на машинах Docker, созданных в Mac OS X.
Подключение к безопасному порту Docker с помощью curl дает команду как:
|
1
2
3
4
|
$ curl https://$HOST:2376/images/json \ --cert ~/.docker/cert.pem \ --key ~/.docker/key.pem \ --cacert ~/.docker/ca.pem |
Пара проблем с этой командой:
- Эта команда даже не работает для Docker Machine, поскольку сертификаты для каждого компьютера хранятся в
.docker/machine/machines/<machine-name>. - Даже если эта команда изменена, чтобы соответствовать этому пути:
1
curl https://192.168.99.100:2376/images/json--cert $DOCKER_CERT_PATH/cert.pem --key $DOCKER_CERT_PATH/key.pem --cacert $DOCKER_CERT_PATH/ca.pemЭто все еще дает следующую ошибку:
1curl: (58) SSL: Can't load the certificate"/Users/arungupta/.docker/machine/machines/couchbase/cert.pem"and its private key: OSStatus -25299Виновником этого является обновленная утилита curl для пользователей OSX Mavericks . Таким образом, в новой версии CURL вместо API OpenSSL используется API безопасного транспорта Apple. Это означает, что сертификаты должны быть в формате P12.
Давайте исправим это!
- Перейдите в каталог, где хранятся сертификаты для вашего компьютера. В моем случае это
.docker/machine/machines/couchbase. - Сгенерируйте
*.p12формат для сертификата:12345678openssl pkcs12 -export\-inkey key.pem \-incert.pem \-CAfile ca.pem \-chain \-name client-side \-out cert.p12 \-password pass:mypassПодробнее здесь .
- Теперь вызовите API REST как:
1
curl https://192.168.99.100:2376/images/json--cert $DOCKER_CERT_PATH/cert.p12 --pass mypass --key $DOCKER_CERT_PATH/key.pem --cacert $DOCKER_CERT_PATH/ca.pemОбратите внимание,
--certтеперь указывает на сгенерированный сертификат--passа пароль сертификата указывается sing--pass.Это вернет результат как:
1[{"Id":"sha256:d38beda529d3274636d6cb1c9000afe4f00fbdcfa544140d6cc0f5d7f5b8434a","ParentId":"","RepoTags":["arungupta/couchbase:latest"],"RepoDigests":null,"Created":1450330075,"Size":374824677,"VirtualSize":374824677,"Labels":{}}]Хорошо, теперь это имеет смысл!
- Попробуем запустить сервер Couchbase как:
12
~ > docker run -d -p 8091-8093:8091-8093 -p 11210:11210 arungupta/couchbase42d1414883affd0fbb272cb1378c2f6b5118acf3ed5cb60cbecdc42f95602e3eИ вызовите другой API REST для просмотра более подробной информации об этом контейнере:
12~ > curl https://192.168.99.100:2376/containers/json--cert $DOCKER_CERT_PATH/cert2.p12 --pass mypass --key $DOCKER_CERT_PATH/key.pem --cacert $DOCKER_CERT_PATH/ca.pem[{"Id":"42d1414883affd0fbb272cb1378c2f6b5118acf3ed5cb60cbecdc42f95602e3e","Names":["/admiring_pike"],"Image":"arungupta/couchbase","ImageID":"sha256:d38beda529d3274636d6cb1c9000afe4f00fbdcfa544140d6cc0f5d7f5b8434a","Command":"/entrypoint.sh /opt/couchbase/configure-cluster.sh","Created":1454850194,"Ports":[{"IP":"0.0.0.0","PrivatePort":8092,"PublicPort":8092,"Type":"tcp"},{"PrivatePort":11207,"Type":"tcp"},{"IP":"0.0.0.0","PrivatePort":11210,"PublicPort":11210,"Type":"tcp"},{"PrivatePort":18092,"Type":"tcp"},{"PrivatePort":18091,"Type":"tcp"},{"IP":"0.0.0.0","PrivatePort":8093,"PublicPort":8093,"Type":"tcp"},{"IP":"0.0.0.0","PrivatePort":8091,"PublicPort":8091,"Type":"tcp"},{"PrivatePort":11211,"Type":"tcp"}],"Labels":{},"Status":"Up 2 seconds","HostConfig":{"NetworkMode":"default"},"NetworkSettings":{"Networks":{"bridge":{"IPAMConfig":null,"Links":null,"Aliases":null,"NetworkID":"","EndpointID":"6feaf4c1c70feaf0ba240ce55fb58ce83ebb84c8098bef9171998e84f607fa0b","Gateway":"172.17.0.1","IPAddress":"172.17.0.2","IPPrefixLen":16,"IPv6Gateway":"","GlobalIPv6Address":"","GlobalIPv6PrefixLen":0,"MacAddress":"02:42:ac:11:00:02"}}}}]
Прочитайте полный API и сходите с ума сейчас!
| Ссылка: | Включите Docker Remote API на Docker Machine в Mac OS X от нашего партнера по JCG Аруна Гупта в блоге Miles to go 2.0… . |