Diferencia entre revisiones de «Docker»

De Ardemans Wiki
Saltar a: navegación, buscar
(Borrar todas los contenedores de mi máquina)
(Saber los tags de una imagen en un registry remoto)
Línea 120: Línea 120:
  
 
Al parecer no es una cosa sencilla, y buscando he visto que se puede consultar a través de una URL de la API.
 
Al parecer no es una cosa sencilla, y buscando he visto que se puede consultar a través de una URL de la API.
```
+
 
 +
<pre>
 
curl -s -S 'https://registry.hub.docker.com/v2/repositories/library/centos/tags/
 
curl -s -S 'https://registry.hub.docker.com/v2/repositories/library/centos/tags/
```
+
</pre>

Revisión de 15:51 15 feb 2016

Introducción

Mis notas mientras aprendo a usar docker. Como siempre en mis notas puede haber cosas erróneas que iré corrigiendo según vaya descubriendo.


Lo que entiendo por Docker

Un gestor de ejecución de aplicaciones en entornos cerrados, lo que se conoce como 'contenedores', como se podria hacer con chroot, pero que se extiende mucho mas allá con el manejo de los puertos que abre cada, acceso a volumenes de datos, etc.

Esos contenedores se pueden personalizar con los servicios o scripts que queramos y se pueden exoprtar fácilmente a otros host que tenga docker. Esa exportación hasta donde he visto se hace mediante el uso de Docker Hub, que es un servicio en la nube (a modo github) donde se almacenan esos contenedoresñ, aunque también he visto que existe el servicio "privado" para que lo montes de forma interna en tu red (ver docker-registry en github)

Documentación

Hasta el momento impecable, con un tutorial online para probar los primeros pasos y después extensa guía de usuario bien estructurada donde paso a paso se van aprendiendo todas las carácterísticas.

Instalación

Muy bien documentada también la instalación para cada S.O. en URL. La instalación se hace mediante la descarga y ejecución de un script, que al final realiza una serie de pasos, añade un source al apt e instala los paquetes de ubuntu.

Uso básico

Trabajo con las Imagenes

Para listar las imágenes que tenemos descargadas

docker images

Para buscar una imagen nueva podemos buscar directamente en la web de docker hub o podemos buscar a través de la línea de comandos

docker search <palabra>

Para descargar una imagen podemos usar el siguiente comando, aunque no es extrictamente necesario, ya que si hacemos uso de una imagen que no tenemos en local irá a buscarlo al repositorio externo

docker pull ubuntu:14.04

Si queremos borrar una de las imagenes que nos hemos descargado podemos usar el siguiente comando

docker rmi ubuntu


Los contenedores

A partir de una imagen podemos levantar un contenedor ejecutando alguna aplicación que contenga. Un ejemplo muy sencillo sería ejecutar un echo

docker run ubuntu:14.04 echo "Una prueba"

Esto lo que hará será crear el contenedor a partir de la imagen ubuntu (con el tag 10.04) y ejecutar el echo dentro del contenedor. Una vez finalizada la ejecución el contenedor permanece creado

Podemos ver las ejecuciones que se están realizando en los diferentes contenedores

docker ps

Si queremos ver además todos los conetenedores, incluso los que no están actualmente ejecutando nada podemos añadir el parámetro -a.

Cada contenedor que se crea tiene asignado un ID y un nombre. Se puede hacer referencia al contenedor a través del ID o del nombre. El nombre se asigna de forma automática a no ser que nosotros se lo especifiquemos en el run con el parámetro --name


Cualquiera de esos contenedores "parados" se pueden volver a ejecutar con:

docker start <id_contenedor>

Lo que se ejecutará será el comando que hayamos ejecutado la última vez, que en el caso anterior será el echo "Una Prueba" que hemos hecho antes.

Si queremos borrar uno de los contenedores (se perderán los cambios o datos que se hayan generado) podremos usar:

docker rm <id_contenedor>


Opciones al ejecutar un contenedor

Si ejecutamos con "run" el contenedor a partir de una imagen, sin parámetros como hemos hecho antes, el proceso se quedará en consola, pero podemos ejecutarlo con la opción detached, para que se ejecute en segundo plano.

docker run -d ubuntu find /usr

De esta forma hemos ejecutado el comando find (que tarda un rato) y nos ha devuelto el control a la consola inmediatamente y no hemos visto la salida por consola. Si queremos ver el resultado que ha salido por consola de ese comando, en ese contenedor, siempre podemos conslutar con el comando:

docker logs <id_contenedor>

en el caso anterior veremos la salida de "find /usr" que hemos hecho.

Si el proceso que vamos a ejecutar dentro del contenedor va a pedir algun tipo de entrada por consola entonces tendremos que usar el parámetro -i

docker run -i register rm -i /bin/true

Preguntará por consola si queremos borrar ese fichero, pero si no ponemos el -i no nos dará oportunidad para contestar y directamente se terminará el proceso.

Si además el proceso que vamos a ejecutar es una shell tendremos que usar el parametro -t que asigna una pseudo-tty, de esta forma podremos acceder al contenedor como si de una máquina fuera:

docker run -t -i register /bin/bash

Algunos trucos

Borrar todos los contenedores de mi máquina

Yo que se... si estás haciendo pruebas te puede interesar... Haciendo uso del parámetro -q del docker ps, que muestra solo los id's de los contenedores, podemos mezclarlo con un docker rm:

docker rm -f $(docker ps -a -q)

Saber los tags de una imagen en un registry remoto

Al parecer no es una cosa sencilla, y buscando he visto que se puede consultar a través de una URL de la API.

curl -s -S 'https://registry.hub.docker.com/v2/repositories/library/centos/tags/