Comunidad de diseño web y desarrollo en internet online

Instalación y primeros pasos en Docker



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.

Publica tu comentario

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate