Docker para los que no saben aún, sería una analogía de una máquina virtual ligera, aunque realmente la virtualización se hace a nivel de sistema operativo. El proyecto Docker se ha vuelto famoso en el mundo de administradores de sistemas. Grandes proveedores de servicios como Amazon Web Services y DigitalOcean dan soporte a Docker. Por eso es importante conocer su existencia, como lo instalamos y usamos.
Instalación de Docker en GNU/Linux
Instalación en Fedora 19+ / CentOS 7
Necesitamos usar el gestor de paquetes: yum.
Código :
# yum install docker-io # systemctl start docker
Instalación en Ubuntu Trusty 14.04 (LTS)
Código :
# apt-get update # apt-get install docker.io # ln -sf /usr/bin/docker.io /usr/local/bin/docker # sed -i '$acomplete -F _docker docker' /etc/bash_completion.d/docker.io
Verificación de Instalación
Para verificar que Docker ha sido instalado satisfactoriamente, debemos ejecutar un contenedor, en este caso con la imagen de Fedora.
Código :
$ sudo docker run -i -t fedora /bin/bash
Si no aparece ningún error y luego de descargar la imagen y ejecutar el binario bash nos aparece el prompt de la consola del contenedor, significará que Docker ha sido instalado satisfactoriamente.
Uso de Docker
El uso de Docker principalmente se hace a través de la consola, con el comando docker, los comandos compatibles con Docker en su versión 1.2 son los siguientes:
Código :
Commands: attach Attach to a running container build Build an image from a Dockerfile commit Create a new image from a container's changes cp Copy files/folders from a container's filesystem to the host path diff Inspect changes on a container's filesystem events Get real time events from the server export Stream the contents of a container as a tar archive history Show the history of an image images List images import Create a new filesystem image from the contents of a tarball info Display system-wide information inspect Return low-level information on a container kill Kill a running container load Load an image from a tar archive login Register or log in to a Docker registry server logout Log out from a Docker registry server logs Fetch the logs of a container port Lookup the public-facing port that is NAT-ed to PRIVATE_PORT pause Pause all processes within a container ps List containers pull Pull an image or a repository from a Docker registry server push Push an image or a repository to a Docker registry server restart Restart a running container rm Remove one or more containers rmi Remove one or more images run Run a command in a new container save Save an image to a tar archive search Search for an image on the Docker Hub start Start a stopped container stop Stop a running container tag Tag an image into a repository top Lookup the running processes of a container unpause Unpause a paused container version Show the Docker version information wait Block until a container stops, then print its exit code
Creando un contenedor
El primer comando que debemos conocer es como crear y ejecutar un contenedor, para eso se utiliza el comando [code single]run[/code] de Docker.
El comando [code single]run[/code] tiene parámetros con el cual le podemos asignar memoria, cpu, variables de entorno, servidor DNS, volúmenes o carpetas del sistema, para que sean compartidas con el contenedor, entre otros comandos, para ver la lista completa ejecutan:
Código :
# docker run --help
Bien, ahora, para poder crear y ejecutar un contenedor, necesitamos una imagen, podemos por separado descargar una, o con pasarle el nombre de la imagen al comando [code single]run[/code], se encargará de descargarla si no se encuentra localmente.
Para verificar la instalación de Docker ejecutamos una imagen de Fedora, ahora en este ejemplo ejecutaremos el comando [code single]echo[/code] en una imagen de Ubuntu.
Código :
# docker run -i -t ubuntu /bin/echo Bienvenido al mundo de Docker Unable to find image 'ubuntu' locally Pulling repository ubuntu 826544226fdc: Download complete 511136ea3c5a: Download complete b3553b91f79f: Download complete ca63a3899a99: Download complete ff01d67c9471: Download complete 7428bd008763: Download complete c7c7108e0ad8: Download complete Bienvenido al mundo de Docker
Hemos creado nuestro primer contenedor con el proceso [code single]echo[/code], vemos que si la imagen no existe, Docker la descarga. Hay algo peculiar en el proceso, cuando se descarga una imagen uno observa unos hashes, cada uno es un commit, el sistema donde se guardan esos commits es en Docker Hub Registry.
El contenedor al ejecutar [code single]echo[/code] automaticamente se detiene, ya que [code single]echo[/code] imprime en pantalla y termina el proceso, por lo tanto Docker entiende que ya el contenedor debe detenerse.
Listar y ejecutar contenedores
Nuestro primer contenedor con [code single]echo[/code] se detuvo, pero podemos ejecutarlo nuevamente, ¿Y cómo?, pues primero necesitamos conocer como se llama el contenedor, para eso usamos el comando [code single]ps[/code] de Docker.
Ejecutamos el comando:
Código :
# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
No nos muestra nada, ¿Por qué?, porque ya el contenedor se ha detenido, y el comando [code single]ps[/code] por defecto muestra solo contenedores en ejecución.
Para poder ver nuestro contenedor debemos pasarle el parámetro [code single]-a[/code] y así sabremos el nombre del contenedor.
Código :
# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 47e0ffdf96f1 ubuntu:latest "/bin/echo Bienvenid 7 minutes ago Exited (0) 4 minutes ago
Aquí vemos la lista de contenedores, en este caso como es uno solo es fácil reconocer nuestro contenedor, nuestro contenedor no tiene ningún nombre, así que para poder hacer alguna acción con el contendor debemos tomar su ID.
Luego de conocer el ID, usamos el comando [code single]start[/code] de Docker, para iniciar el contenedor nuevamente, y le pasamos como parámetro [code single]-a[/code] para capturar la salida.
Código :
# docker start -a 47e0ffdf96f1 47e0ffdf96f1 Bienvenido al mundo de Docker
¡Oh! Nuevamente nuestro querido contenedor.
Eliminando un contenedor
Ya que sabemos crear, listar y ejecutar contenedores, vamos a eliminar uno, usando el comando [code single]rm[/code] podremos eliminar un contenedor usando el ID del mismo.
Código :
# docker rm 47e0ffdf96f1 47e0ffdf96f1
Si listamos nuevamente, ya no aparecerá nuestro contenedor.
Código :
# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Invitación a Docker Hub
Los invito a abrir una cuenta en https://hub.docker.com/, y empezar a jugar con images ya fabricadas.
¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
Por jozeepp el 24 de Septiembre de 2014
Por yograterol el 26 de Septiembre de 2014
Por jozeepp el 27 de Septiembre de 2014
Con Docker se puede levantar el aspecto gráfico al virtualizar los SO ? o solo por consola?