Introducción a Docker – Parte 2

Dificultad: Intermedio
<b>Tiempo de Lectura:</b> 4 minutos

Docker se ha convertido en una herramienta indispensable hoy en día para todos los que somos Desarrolladores de aplicaciones o SysAdmins, ya que como hablamos en nuestra Introducción a Docker nos brinda un entorno muy simple de aplicar en nuestras maquinas, no nos consumirá tantos recursos y podremos desarrollar / probar nuestros scripts en distintos sistemas operativos.

Tutorial práctico de Docker

Ahora luego de haber hecho la introducción pasada a Docker, y teniendo un poco más de conocimiento teórico sobre él, pasemos a un par de ejercicios prácticos.

Instalar Docker en Ubuntu 14.04 LTS

Lo primero que debemos hacer y como buena practica antes de instalar cualquier paquete es hacer un update de nuestro sistema

apt-get update

Ahora vamos a instalar el paquete docker-io

apt-get -y install docker.io

Ahora con este par de comandos reparamos las rutas por defecto de docker

ln -sf /usr/bin/docker.io /usr/local/bin/docker
sed -i '$acomplete -F _docker docker' /etc/bash_completion.d/docker.io

Finalmente y es un paso opcional, configuramos Docker para que inicie automáticamente cuando nuestra maquina se enciende

update-rc.d docker.io defaults

Instalar Docker en Debian

En el caso de Debian, debemos hace los siguientes pasos para la instalación.

Purgamos y verificamos que exista cualquier versión de Docker

apt-get purge lxc-docker*
apt-get purge docker.io*

Actualizamos todo el servidor y luego nos aseguramos de que podamos trabajar las actualizaciones con https y se instalan que los certificados de CA.

apt-get update
apt-get install apt-transport-https ca-certificates

Agregamos una clave GPG para las instalaciones

apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D

Abrimos el archivo /etc/apt/sources.list.d/docker.list si contiene información la borramos y si no existe el archivo lo creamos

Lo que debemos copiar en este archivo depende de la versión de Debian les dejamos para las distintas versiones

Debian Wheezy

echo "deb https://apt.dockerproject.org/repo debian-wheezy main" >> /etc/apt/sources.list.d/docker.list

Debian Jessie

echo "deb https://apt.dockerproject.org/repo debian-jessie main" >> /etc/apt/sources.list.d/docker.list

Debian Stretch/Sid

echo "deb https://apt.dockerproject.org/repo debian-stretch main" >> /etc/apt/sources.list.d/docker.list

Actualizamos ahora el sistema para que tome los últimos cambios

apt-get update

Verificamos las políticas de Docker a nivel de sistema operativo

apt-cache policy docker-engine

Ahora procedemos a instalar el paquete de Docker

apt-get install docker-engine

 

Instalar Docker en Centos 7

Como siempre procedemos a actualizar nuestro sistema con el siguiente comando

yum -y update

Ahora instalamos los paquetes necesarios para Docker

yum -y install docker docker-registry
Colocamos el servicio de Docker para que inicie siempre cuando se inicie la maquina
systemctl enable docker.service

Ahora iniciamos el Servicio de Docker

systemctl start docker.service

Con este comando podemos tener el estatus actual de Docker

systemctl status docker.service

 

Comandos Utiles en Docker

Ahora que ya tenemos instalado en nuestra maquina Docker podremos empezar a crear nuestros contenedores en base a las imágenes disponibles en  el repositorio publico de del sitio web de Docker

Aquí te dejamos unas guías de varios comandos de Docker que te seguramente debas guardarlos en tu nota ya que tendrás todo lo necesario para convertirte de a poco en un administrador profesional de Docker

 

docker images: listado de imágenes ya descargadas

[infra@localhost ~]$ sudo docker images
 REPOSITORY TAG IMAGE ID CREATED SIZE
 ubuntu latest c5f1cf30c96b 6 days ago 120.7 MB
 centos 6.6 881cca81e67f 6 months ago 202.6 MB

docker pull <ID imagen>: descargar imágen para tenerla disponible para los contenedores

[infra@localhost ~]$ sudo docker pull ubuntu
Using default tag: latest
latest: Pulling from library/ubuntu

6d28225f8d96: Pull complete 
166102ec41af: Pull complete 
d09bfba2bd6a: Pull complete 
c80dad39a6c0: Pull complete 
a3ed95caeb02: Pull complete 
Digest: sha256:5718d664299eb1db14d87db7bfa6945b28879a67b74f36da3e34f5914866b71c
Status: Downloaded newer image for ubuntu:latest

docker rmi  <ID imagen>: borrado de una imagen

[infra@localhost ~]$ sudo docker rmi ubuntu
Untagged: ubuntu:latest
Deleted: sha256:c5f1cf30c96b5b55c0e6385f2ecb791790eacfdc874500ec3dd865789e358dd1
Deleted: sha256:6966dfd905fe3357994340c67347285cfce8a1791fc22806c9c0f427fbdeec40
Deleted: sha256:65faf101139189314da25357e4704f3412877d4b881d86944e9616630f2a4faa
Deleted: sha256:713a70d252b71a53cf3d090acef5c1bae668cb489f5d8b1205f2cb9e0a6cd68a
Deleted: sha256:3417308f5ad0aa1dd0af30817cd1bdedeb11971023a8f54668b17a29078ced1c
Deleted: sha256:7aae4540b42d10456f8fdc316317b7e0cf3194ba743d69f82e1e8b10198be63c

docker history <ID imagen>: historial de una imagen

[infra@localhost ~]$ sudo docker history ubuntu
IMAGE CREATED CREATED BY SIZE COMMENT
c5f1cf30c96b 6 days ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0 B 
<missing> 6 days ago /bin/sh -c sed -i 's/^#\s*\(deb.*universe\)$/ 1.895 kB 
<missing> 6 days ago /bin/sh -c rm -rf /var/lib/apt/lists/* 0 B 
<missing> 6 days ago /bin/sh -c set -xe && echo '#!/bin/sh' > /u 701 B 
<missing> 6 days ago /bin/sh -c #(nop) ADD file:ffc85cfdb5e66a5b4f 120.7 MB

Crear Contenedor de Ubuntu con acceso a shell

Usando docker run  en la siguiente linea vamos a crear un contenedor llamado ubuntuinfra desde nuestra imagen ya descargada ubuntu:lastest y con acceso ssh por el puerto 22 ya que hemos colocado que el mismo puerto lo compartan tanto del host como el contenedor

[infra@localhost ~]$ sudo docker run -d -P -p 22:22 --name ubuntuinfra -it ubuntu:latest
4426ff3bf6603b19181844381c7f9707a71c600659e58e5917952d06a344e12d

Listado de Contenedores activos

[infra@localhost ~]$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4426ff3bf660 ubuntu:latest "/bin/bash" 4 minutes ago Up 4 minutes 0.0.0.0:22->22/tcp ubuntuinfra

Iniciar Contenedor

[infra@localhost ~]$ sudo docker start ubuntuinfra
ubuntuinfra

Conectarnos al Contenedor (Tip: Luego de ejecutar el attach presiona ENTER nuevamente para activar el contenedor)

[infra@localhost ~]$ sudo docker attach ubuntuinfra
root@4426ff3bf660:/#
root@4426ff3bf660:/# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04 LTS"

Nota: Con Crtl +D podemos salir del contenedor y volver a nuestro entorno normal

Borrar Contenedor

[infra@localhost ~]$ sudo docker rm ubuntuinfra
ubuntuinfra
[infra@localhost ~]$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

Cómo obtener Ip Privada del contenedor

sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}' $CID

Conclusión

Luego de haber leído este primero tutorial práctico de Docker tendrás una base solida para empezar a utilizar Docker como entorno de desarrollo, donde podremos crear y probar nuestras apps en distintos entornos teniendo la ventaja de que por ninguna razón nuestro host (maquina local) no se dañe o se des-configure. Así que con Docker somos libres de configurar cualquier entorno de cualquier sistema operativo y luego destruirlo en segundos.

¿Tienes alguna duda sobre Docker? ¿De que Stack de desarrollo (Apache, Nginx, Nodejs) te gustaría que hagamos un completo tutorial con Docker?

 

Si te gustó esta Parte 2, sígue con la Parte 03:


¿Te resultó útil el artículo? Compártelo con tus colegas: