Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Orquestrando containers com PHP e Docker API

Orquestrando containers com PHP e Docker API

Nesta palestra será realizada um overview da API disponibilizada pelo Docker, desde a sua instalação até a configuração da autenticação para o uso de sua API.

Avatar for Rodrigo Gattermann

Rodrigo Gattermann

November 19, 2016

Other Decks in Programming

Transcript

  1. Rodrigo Gattermann » Formado em S.I. pela UNIVATES » Desenvolvedor

    PHP na DeliverIT » Membro da comunidade PHPRS 2 Olá!
  2. CONFIGURAÇÃO Configuração testada nas distribuições Fedora 24 e Ubuntu 16.04.

    5 » Para habilitar a comunicação via API, edite o arquivo /lib/systemd/system/docker.service » Modifique a linha que começa com "ExecStart" para que fique no seguinte formato: ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock » Salve as alterações. Recarregue as configurações e reinicie o serviço do Docker. sudo systemctl daemon-reload sudo service docker restart
  3. CONFIGURAÇÃO 6 » Teste de acesso a API do Docker:

    curl -X GET -H "Content-Type: application/json" "http://127.0.0.1:4243/version" { "Version": "1.12.3", "ApiVersion": "1.24", "GitCommit": "6b644ec", "GoVersion": "go1.6.3", "Os": "linux", "Arch": "amd64", "KernelVersion": "4.8.6-201.fc24.x86_64" }
  4. DOCKER REMOTE API 8 Exibir informações referentes ao docker host:

    curl -X GET -H "Content-Type: application/json" "http://127.0.0.1:4243/info" { "ID": "KPYQ:FLYV:CHMN:L3OG:HZ7L:NHHZ:RRHX:NOB6:RNQJ:TLEU:MTSY:EH6K", "Containers": 2, "ContainersRunning": 2, "ContainersPaused": 0, "ContainersStopped": 0, "Images": 95, "Driver": "devicemapper", "DriverStatus": [...], "SystemStatus": null, "Plugins": { "Volume": [...], "Network": [...], "Authorization": null } "MemoryLimit": true, "SwapLimit": true, ...
  5. DOCKER REMOTE API 9 Exibir todas as imagens existentes do

    host curl -X GET -H "Content-Type: application/json" "http://127.0.0.1:4243/images/json?all=0" [ { "Id": "sha256:68415a901e0aea9784592134c959c8ca56b9a09de587be0a075ca2f3bfc66051", "ParentId": "sha256:84f744cb10f4f61c12b27de5886e8ee5c4cf5b59d56a8e1f1a3f9ca25da22008", "RepoTags": [ "mymongo:1.0" ], "RepoDigests": null, "Created": 1479378659, "Size": 80595381, "VirtualSize": 80595381, "Labels": {} }, ...
  6. DOCKER REMOTE API 10 Exibir containers que estão iniciado curl

    -X GET -H "Content-Type: application/json" "http://127.0.0.1:4243/containers/json" Exibir containers já criados curl -X GET -H "Content-Type: application/json" "http://127.0.0.1:4243/containers/json?all=1" Exibir estatísticas sobre o container curl -X GET -H "Content-Type: application/json" \ "http://127.0.0.1:4243/containers/d8aae88a33af/stats?stream=false"
  7. DOCKER REMOTE API 11 Iniciar container curl -X POST -H

    "Content-Type: application/json" "http://127.0.0.1:4243/containers/d8aae88a33af/start" Parar container curl -X POST -H "Content-Type: application/json" "http://127.0.0.1:4243/containers/d8aae88a33af/stop" Excluir container curl -X DELETE -H "Content-Type: application/json" "http://127.0.0.1:4243/containers/d8aae88a33af"
  8. DOCKER REMOTE API 12 Criar um container curl -X POST

    -H "Content-Type: application/json" \ "http://127.0.0.1:4243/containers/create" \ -d '{ "Hostname":"", "User":"", "Memory":0, "MemorySwap":0, "AttachStdin":false, "AttachStdout":true, "AttachStderr":true, "PortSpecs":null, "Privileged":false, "Tty":false, "OpenStdin":false, ...
  9. AUTENTICAÇÃO 16 » Instalação do nginx: sudo dnf install nginx

    » Criação das credenciais de acesso: htpasswd -c /etc/nginx/.htpasswd osboxes » Criar o arquivo de configuração do proxy. Sudo vim /etc/nginx/conf.d/default.conf
  10. AUTENTICAÇÃO 17 server { listen 4242 default_server; server_name localhost; location

    / { proxy_pass http://127.0.0.1:4243; auth_basic_user_file /etc/nginx/.htpasswd; auth_basic "Acesso restrito a API do Docker"; } }
  11. AUTENTICAÇÃO 18 » Reiniciar o serviçco do Nginx Systemctl restart

    nginx.service » Acessar a url da API do Docker: http://127.0.0.1:4242
  12. CLIENTE DOCKER-PHP 20 » Cliente Docker escrito em PHP. »

    A biblioteca pretende atingir 100% de suporte API do Docker. » Já suporta a v1.24 da API. » Disponível em: https://github.com/docker-php/docker-php » Já suporta a v1.24 da API. » Relação completa de clientes oficiais para docker https://docs.docker.com/engine/reference/api/remote_api_client_libraries/
  13. Encontro PHPRS em Canela » 26/11 (Sábado) » 14:00 -

    18:00 » Hotel Klein Ville 26 CONVITE!