Oi, pessoal!
Hoje vamos nos aprofundar um pouco mais na API do Docker e entender de que forma você pode integrá-la com alguma linguagem de programação. Como explicado neste artigo, o Docker é dividido basicamente em duas partes: Engine e CLI, ou seja, podemos acessar o Docker Engine de qualquer lugar, desde que o mesmo tenha sua API exposta, neste link são relacionadas todas as bibliotecas em diversas linguagens que podem ser utilizadas para manipular a API do Docker, ou seja, você não precisa se preocupar, se prefere PHP, há uma biblioteca em PHP; ou se prefere Java, pois há uma biblioteca em Java. Se por acaso prefere GO, bom, há uma biblioteca também e assim para muitas outras linguagens…
Vamos a prática!
Primeiro você deve instalar a biblioteca Docker no Python, para isso instale o pip.
Se for CentOS 7:
# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm # yum -y install python-pip
Se for Ubuntu:
# apt-get instal python-pip
Instalado o pip, execute:
# pip install docker-py
Para criar um container, você pode utilizar o seguinte script:
import docker objdocker = docker.Client(base_url="unix://var/run/docker.sock") container = objdocker.create_container(image=imagem, command=comando, hostname=host+":4500",mem_limit="1000m",name=nome_Container) objdocker.start(container,port_bindings={port_Container: ('0.0.0.0', port_Host)})
Para saber a utilização de recursos de um container, pode utilizar o script:
import docker objdocker = docker.Client(base_url="unix://var/run/docker.sock") objdocker.stats_container = objdocker.stats('nome_Container') for stat in objdocker.stats_container: print(stat)
Para saber algumas informações do Docker, pode utilizar:
import docker objdocker = docker.Client(base_url="unix://var/run/docker.sock") objdocker.info()
Para remover um container, você pode utilizar:
import docker objdocker = docker.Client(base_url="unix://var/run/docker.sock") objdocker.stats_container = objdocker.stop('nome_Container')
DOCKER_OPTS=’-H tcp://0.0.0.0:PORTA -H unix:///var/run/docker.sock’
Reinicie o Docker:
# service docker restart
Pronto! Agora você pode manipular esse host de Docker remotamente – pode utilizar os mesmos script acima trocando apenas a base_url, algo parecido com isso:
objdocker=docker.Client(base_url=”tcp://host_remoto:PORTA”,,version=”1.20″,timeout=30)
A partir disso é possível realizar algumas automatizações de tarefas, e claro é possível integrar isso em algum dashboard ou ferramenta para poder administrar seus containers de forma mais organizada.
Espero ter ajudado. E se gostou, ajude divulgando nosso trabalho.
Abraço!