La documentación de docker-py se encuentra en su sitio oficial.
Los artículos
Docker en Debian JessieInstalar Uso Docker en Debian Jessie (de 1)parte Uso Docker en Debian Jessie (de 2)parte Crear una Docker a partir deimagen un Dockerfilearchivo DjangoIniciando Dockerusando GitlabInstalar mediopor Dockerde Ejecutando con dockermicroservicios docker-composeusando - Docker en Docker (DinD)
- Iniciando Django con docker usando docker-compose con postgresql como microservicio.
Importar un Docker en Python.contenedor - Compartir imagenes Docker por medio de archivos tar.
- Crear un registro de imagenes Docker privado.
AnacondaUsar desde un Docker.contenedor - Crear un entorno de Integración y Despligue continue con Docker para node.js.
Jupyter NotebookUsar desde un Docker.contenedor - Ejecutar una prueba de doctest con un contenedor Docker.
- Ejecutar una prueba de unittest en Python con un contenedor Docker.
- Montar una Plataforma como servicio (PaaS) con Dokku (docker).
Uso docker-machine.de Proveer cluster con docker swarm y docker-machine.un - Instalar Jenkins por medio de Docker y crear una imagen Docker de Jenkins
- Automatizar la construcción de imágenes Docker con github.
Crear una Docker para MongoDB3.imagen Crear un Dockercontenedor entorno de desarrollo para Sailscomo . .js - Correr aplicaciones de escritorio desde un contenedor Docker.
- Usar dockerui para la gestión de imágenes y contenedores de Docker
Crear una Dockerimagen RethinkDBde - Profiling
de script Python conun cProfile Instalar -runnergitlab de -gitlab ci mediopor Dockerde Correr sonarqube desde un contenedor DockerCrear una imagen dockerde Redis.
#Al ejecutar el script! /usr/bin/python #Seimporta el docker. cliente from docker import Client #Sela asocia instancia cliente de docker conel socket.cli = Client( base_url='unix: //var/run/docker. sock')muestra laimagen dockerde debian")cli . images( name="debian")) #Secrea un contenedorbasandose en la imagen de debian yejecuta sleeppor 30 segcontainer =cli . create_container( image="debian", command='/bin/sleep 30')print (" sela imp r imeinformaci o ndel contenedo r")( container) print ("Semuestra la información de loscontenedores que están corriendo.")cli . containers( ))
[{u'Created': 1449257280, u'Labels': None, u'VirtualSize': 125090240, u'ParentId': u'sha256:2e4b1470911604ccb99e3d2a9db8487661bb1d6db5b7aa9e4cf54a4b8bc7e33e', u'RepoTags': [u'debian:latest'], u'RepoDigests': None, u'Id': u'sha256:87b7eb6de0a6def7be27d485caf243354f8b5e19f41b0222b19f6f02b102dc61', u'Size': 125090240}]
se imprime la informacion del contenedor
{
Se muestra la informacion de los contenedores que estan corriendo.
[{u'Status': u'Up 43 minutes', u'Created': 1459285417, u'Image': u'jupyter/notebook', u'Labels': {}, u'NetworkSettings': {u'Networks': {u'bridge': {u'NetworkID': u'', u'MacAddress': u'02:42:ac:11:00:02', u'GlobalIPv6PrefixLen': 0, u'Links': None, u'GlobalIPv6Address': u'', u'IPv6Gateway': u'', u'IPAMConfig': None, u'EndpointID': u'ec791d0a8b52fee4fc46447b43304ce626629790e3a525cd4ae03e6a25bda3d5', u'IPPrefixLen': 16, u'IPAddress': u'172.17.0.2', u'Gateway': u'172.17.0.1', u'Aliases': None}}}, u'HostConfig': {u'NetworkMode': u'default'}, u'ImageID': u'sha256:1c02aa25b7b817d8b7a7557b4b62250db6c735da3e7fabb4b3a157e55256e2d4', u'State': u'running', u'Command': u'tini -- jupyter notebook', u'Names': [u'/berserk_darwin'], u'Mounts': [{u'RW': True, u'Source': u'/home/ernesto/dockers/notebook/notebook', u'Destination': u'/notebooks', u'Mode': u'', u'Propagation': u'rprivate'}], u'Id': u'dfcc1bd19dab02580cce30d1719d8514eb0af2ab1dec8b01e42b95376ce5e608', u'Ports': [{u'IP': u'0.0.0.0', u'Type': u'tcp', u'PublicPort': 8888, u'PrivatePort': 8888}]}]
#/usr/bin/python #Se ! importa el docker. cliente docker import Client #Se import io para el manejo del texto en la salida. from from import BytesIO #Se crea el archivo dockerfile io = ''' # Shared Volume FROM dockerfile MAINTAINER Ernesto Crespo, ecrespo@gmail.com VOLUME /data CMD ["/bin/sh"] ''' #Se define busybox encode el como -8 utf = BytesIO f ( dockerfile encode . ' ( -8')) #Se utf la instancia crea del docker al socket. cliente = Client cli base_url='unix ( //var/run/docker : sock') #Se construye la imagen y devuelve la salida de la misma. . = [line for line in response cli build . fileobj=f, rm=True, tag='ecrespo/data' )] ( ("Se muestra la ") respuesta for in response: i ( ) print ("Se muestra los contenedores que estan corriendo, en este caso uno de jupyter") i ( cli containers . )) (
EL resultado de ejecutar el scrip app2.py es el siguiente
Se muestra la respuesta
{"stream":"Step 1 : FROM busybox\n"}
{"stream":" ---\u003e 8c9d515b3079\n"}
{"stream":"Step 2 : MAINTAINER Ernesto Crespo, ecrespo@gmail.com\n"}
{"stream":" ---\u003e Using cache\n"}
{"stream":" ---\u003e 5efdc0a317b7\n"}
{"stream":"Step 3 : VOLUME /data\n"}
{"stream":" ---\u003e Using cache\n"}
{"stream":" ---\u003e b0132c6c3a87\n"}
{"stream":"Step 4 : CMD /bin/sh\n"}
{"stream":" ---\u003e Using cache\n"}
{"stream":" ---\u003e a7c85281e78c\n"}
{"stream":"Successfully built a7c85281e78c\n"}
Se muestra los contenedores que estan corriendo, en este caso uno de jupyter
[{u'Status': u'Up 56 minutes', u'Created': 1459285417, u'Image': u'jupyter/notebook',
u'Labels' : {}, u'NetworkSettings' : {u'Networks' : {u'bridge ': {u'NetworkID ': u '',
u'MacAddress' : u'02: 42: ac : 11:00:02', u'GlobalIPv6PrefixLen': 0, u'Links' : None,
u'GlobalIPv6Address': u '', u'IPv6Gateway': u '', u'IPAMConfig ': None,
u'EndpointID ': u'ec791d0a8b52fee4fc46447b43304ce626629790e3a525cd4ae03e6a25bda3d5',
u'IPPrefixLen ': 16, u'IPAddress' : u'172. 17.0.2', u'Gateway ': u'172. 17.0.1',
u'Aliases' : None}}}, u'HostConfig ': {u'NetworkMode ': u'default '},
u'ImageID ': u'sha256: 1c02aa25b7b817d8b7a7557b4b62250db6c735da3e7fabb4b3a157e55256e2d4',
u'State ': u'running ', u'Command ': u'tini -- jupyter notebook',
u'Names' : [u'/berserk_darwin'], u'Mounts' : [{u'RW ': True,
u'Source ': u '/home/ernesto /dockers/notebook/notebook',
u'Destination ': u '/notebooks', u'Mode ': u '', u'Propagation ': u'rprivate '}],
u'Id ': u'dfcc1bd19dab02580cce30d1719d8514eb0af2ab1dec8b01e42b95376ce5e608',
u'Ports' : [{u'IP ': u'0. 0.0.0', u'Type ': u'tcp ', u'PublicPort ': 8888,
u'PrivatePort ': 8888}]}]
Como se puede ver en la documentación y en los scripts ejecutados, se puede crear
una aplicación que acceda al API de docker o trabajar con las imágenes y contenedores
desde python.
No hay comentarios:
Publicar un comentario