Contenedores Docker si quieres conocer todo lo imprescindible empieza a leer.

Docker lleva muchos años dando de que hablar. En este post te vamos a contar lo que son los contenedores docker.

Docker es una tecnología usada para virtualizar, su gran aporte es que es muy ligera ya que solo virtualiza la aplicación que crea, a esto se le llama Container o contenedor.

Contenedores-Docker Contenedores docker la mejor guía

Si aquello que te explicamos en este post no te parece suficiente, puedes buscar en los siguientes enlaces:

https://www.docker.com/what-docker

https://docs.docker.com/compose/

Contenidos de la página

¿Qué son los contenedores Docker?

En Docker tenemos imágenes que se pueden descargar automáticamente o de la página web oficial. Al ejecutar una instancia, ésta crea un Contanier, el cual vamos a aprender a utilizar.

Para poder usar estos contenedores necesitamos de unos comandos que nos permiten usarlos y utilizarlos de la manera más conveniente.

Esos comandos se desarrollan en una terminal, los cuales son necesarios para dar el uso adecuado a Docker.

Lo primero que tenemos que entender es que las imágenes son previas, creadas por un usuario y los contenedores o containers son aplicaciones asiladas que contienen una o más imágenes.

Estos contenedores contienen todo lo necesario para ejecutar una aplicación.

Contenedores-Docker Contenedores docker la mejor guía

Importante

Recuerda que tienes que tener una terminal para poder usarlos. Si tienes un Mac ya sabes que puedes usar el Spotlight y poner el comando Terminal, al igual que en Linux con la distro de Ubuntu y en Windows con cmd. No nos extenderemos en esto ya que es muy básico. Lo que si tienes que tener claro es que es necesario usar la terminal.

ID de contenedor

Cada contenedor tiene una identificación, se pueden identificar por el nombre que se le asigna o por el ID. El ID se puede usar con su formato reducido o con el extendido. Cualquiera de las dos formas es válida.

Obtenemos la información de los contenedores gracias al comando $ docker ps

Contenedores-Docker Contenedores docker la mejor guía

¿En qué sistemas puedo utilizar los contenedores Docker?

Docker se puede usar en cualquier sistema. En nuestro caso vamos a hablar de los tres más conocidos y usados. Puedes ampliar la información al final de este apartado te dejamos un enlace a la documentación oficial.

Docker se puede usar en cualquier sistema - dwebwordpress

Instalando Docker

Linux

  • Actualizamos nuestra base de datos

$ sudo apt-get update

  • Agreguamos la clave GPG para el repositorio oficial de Docker a nuestro Linux. Recuerda que puedes utilizar el comando de Linux$ sudo su

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

  • Agregamos las fuentes al repo de APT

# apt-add-repository 'deb https://apt.dockerproject.org/repo ubuntu-xenial main'

  • Actualizamos nuestra BBDD

# apt-get update

  • Nos aseguramos que lo estamos instalando desde el repositorio

# apt-cache policy docker-engine

  • Instalamos Docker …

# apt-get install -y docker-engine

  • Comprobamos que está funcionando

# systemctl status docker

Mac

Nos descargamos el archivo del siguiente enlace Descargar Docker

Contenedores-Docker Contenedores docker la mejor guía

Una vez descargado el archivo .dmg solo tenemos que hacer doble click y trasladar la imagen a nuestras aplicaciones como podeos ver en la imagen anterior.

Utilizamos el comando $ docker info

Contenedores-Docker Contenedores docker la mejor guía

Muy fácil! ¿no?

Windows

La instalación en Windows es muy similar a la de Mac pero utilizando un ejecutable .exe en lugar de un .dmg.

Si quieres ampliar la información de las instalaciones puede hacerlo aquí.

El funcionamiento de Docker

 Contenedores-Docker Contenedores docker la mejor guía

Comandos básicos

Contenedores-Docker Contenedores docker la mejor guía

  • Arrancar un contenedor

sudo docker start -a [id de contenedor]

  • Parar un contenedor

sudo docker stop [id de contenedor]

  • Conectándonos a un contenedor

sudo docker attach [id de contenedor]

  • Parar un contenedor

sudo docker stop [id de contenedor]

  • Commit de un contenedor

sudo docker commit [id de contenedor]

  • Eliminar un contenedor

sudo docker rm [id de contenedor

Comandos en docker para no olvidar

Existen una serie de comandos para el uso de docker que conviene no olvidar. Estos son algunos de los que recomendamos y al final de este post puedes ver la infografía que hemos creado.

Ciclo de vida

Crear

$ docker create[id del contenedor]

Renombrar

$ docker rename[id del contenedor]

Correr

$ docker run[id del contenedor]

Borrar

$ docker rm[id del contenedor]

Actualizar

$ docker update[id del contenedor]

Arrancar y parar contenedores

Arrancar

Contenedores-Docker Contenedores docker la mejor guía

$ docker start[id del contenedor]

Parar

$ docker stop[id del contenedor]

Reiniciar

$ docker restart[id del contenedor]

Pausar

$ docker pause[id del contenedor]

$ docker unpause[id del contenedor]

Esperar

$ docker wait[id del contenedor]

Terminar

$ docker kill[id del contenedor]

Conectar

$ docker attach [id del contenedor]

Obtener información

Listar

$ docker ps[id del contenedor]

Logs

$ docker logs[id del contenedor]

Inspeccionar

$ docker inspect[id del contenedor]

Eventos

$ docker events[id del contenedor]

Puertos

$ docker port[id del contenedor]

Estado

$ docker stats[id del contenedor]

Estado del contenedor

$ docker diff[id del contenedor]

Gracias a este comando inspeccionamos los cambios realizados a los archivos o directorios de un contenedor.

Listar todos los contenedores

$ docker ps -a[id del contenedor]

 Importando y exportando

$ docker cp[id del contenedor]

$ docker export[id del contenedor]

Ejecutando comandos con exec

$ docker exec[id del contenedor]

¿Qué son las imágenes en Docker?

Las imágenes son como unas plantillas ya creadas, ya sea por nosotros o por otros, sirviéndonos para crear nuestro contenedores.

Podemos almacenarlo de manera local o en un repositorio público.

Ciclo de vida de las imágenes

Las imágenes en Docker tienen un ciclo de vida útil. Este puede ser avanzado y básico.

Ciclo de vida básico

  • En este ciclo de vida se crea el contenedor a partir de una imagen.
  • Se ejecuta el proceso determinado en el contenedor
  • El proceso de finaliza y el contenedor se detiene
  • Se destruye el contenedor

Ciclo de vida avanzado

  • Se crea un contenedor a partir de una imagen
  • Se ejecuta un proceso en el contenedor
  • Realiza acciones dentro del contenedor
  • Detener el contenedor
  • Lanzar el contenedor nuevamente

Utilizar la consola del contenedor

Para este ciclo de vida podemos usar las banderas -t  y -i con el comando $ docker run

  • La bandera -i le indica a docker que utilice el STDIN del contenedor.
  • La bandera -t indica que se requiere de una pseudo terminal. Es necesario indicar un proceso de terminal en el contenedor, como puede ser bash, zsh o etc.

Contenedores-Docker Contenedores docker la mejor guía

Este comando nos permite entrar en la consola de nuestro contenedor.

Contenedores-Docker Contenedores docker la mejor guía

Ejecutado un contenedor con docker run y un comando en su interior

Contenedores-Docker Contenedores docker la mejor guía

Buscando imágenes en los contenedores de Docker

$ docker search NombreImagen

Contenedores-Docker Contenedores docker la mejor guía

Descargando imágenes

$ docker pull NombreImagen

Contenedores-Docker Contenedores docker la mejor guía

Listando imágenes

$ docker images

Contenedores-Docker Contenedores docker la mejor guía

Actualización y creación de imágenes en los contenedores Docker

Eliminar imágenes

$ Docker rm [ID o nombre del contenedor]

Borrando todas las imágenes

$ docker rmi $(docker images -q)

Borrando imagenes y contenedores

$ docker rm $(docker ps -aq) && docker rmi $(docker images -q)

Crear una imagen con un Dockerfile

Para crear una imagen en Docker basta con crear un archivo llamado Dockerfile. En este archivo pondremos los ingredientes para crear la imagen. Nos puede valer de ejemplo esta:

#Dockerfile
Argumentos e instrucciones

Publicar y obtener imágenes en Dockerhub

Existe un servicio llamado Dockerhub en el que podemos encontrar muchas imágenes. Pueden incluso encontrarse imágenes construidas sobre otras imágenes.

Imágenes recomendables en contenedores Docker

Seguridad

Kali Linux
  • docker pull kalilinux/kali-linux-docker
OWASP ZAP
  • docker pull owasp/zap2docker-stable
WPScan
  • docker pull wpscanteam/wpscan
 Damn Vulnerable Web Application
  • docker pull citizenstig/dvwa
Otras
Vulnerable WordPress Installation
  • docker pull wpscanteam/vulnerablewordpress

Vulnerability as a service: Shellshock

  • docker pull hmlio/vaas-cve-2014-6271

Vulnerability as a service: Heartbleed

  • docker pull hmlio/vaas-cve-2014-0160

Security Ninjas

  • docker pull opendns/security-ninjas

Docker Bench for Security

  • docker pull diogomonica/docker-bench-security

Capítulo OWASP Security Shepherd

docker pull ismisepaul/securityshepherd

Herramienta OWASP WebGoat Project docker image

  • docker pull danmx/docker-owasp-webgoat

Otra herramienta más de OWASP NodeGoat

  • docker-compose build && docker-compose up

Para Penetration Testing OWASP Mutillidae II Web Pen-Test Practice Application

  • docker pull citizenstig/nowasp

OWASP Juice Shop

  • docker pull bkimminich/juice-shop

Kali Linux Docker Image

  • docker pull kalilinux/kali-linux-docker

docker-metasploit

  • docker pull phocean/msf

Desarrollo

WordPress

  • docker pull wordpress 

Node

  • docker pull node – repositorio

Ya sabes que puedes buscar más imágenes en su repo oficial

Algunos sitios que trabajan con contenedores docker

Si pensamos en contenedores hablamos también de alojamientos. Ya vimos los mejores hostings para WordPress pero en esta caso vamos a mencionar los proveedores más especializados en virtualización a través de sistemas como Docker. Estros son algunos:

Contenedores docker, recopilando algunos comandos:

  • docker images Lista las imágenes locales.
  • Descarga una imagen de Dockerdocker pull [nombre de la imagen]
  • docker pull [nombre de la imagen]:[tag] Descarga una imagen con un tag en especifico.

Listar

  • Como ya hemos visto docker ps nos da la posibilidad de listar los contenedores que se encuentran en ejecución.
  • Si queremos obtenemos aquellos que no están en ejecución usaremos: docker ps -a Este comando nos muestra todos los contenedores que estén o no en ejecución.
  • docker ps -a -q Lista y muestra sólo los ID de todos los contenedores que estén o no en ejecución.
  • docker ps -a --no-trunc Muestra el formato extendido del ID de los contenedores.
  • docker ps --filter="[tipo de filtrado]" Filtra los contenedores en función del código de salida, del estado…
  • docker ps --help Muestra un menú de ayuda.

Poner en marcha

  • docker attach [ID/nombre del contenedor] Permite ingresar nuevamente a un contenedor creado anteriormente.
  • docker run --name [nombre del contenedor] [imagen] Inicia un contenedor con un nombre.

Borrar

  • docker rm [ID/nombre del contenedor] Elimina un contenedor.
  • docker rm [ID/nombre...] [ID/nombre...] [ID/nombre...]Permite eliminar más de un contenedor.

Logs

  • docker logs [ID/nombre del contenedor] Muestra los logs de un contenedor.
  • docker logs -f [ID/nombre del contenedor] Muestra los logs en tiempo real de un contenedor.

Ejecutar, parar y pausar

Ejecutar
  • docker exec [opciones] [ID/nombre del contenedor] [comando] Permite ejecutar nuevas acciones en un contenedor.
Iniciar
  • docker start -a [ID/nombre del contenedor] Iniciar nuevamente un contenedor.
Pausar
  • docker pause [ID/nombre del contenedor] Pausa un contenedor en ejecución.
  • docker unpause [ID/nombre del contenedor] Reanudar un contenedor pausado.
Parar
  • docker stop [ID/nombre del contenedor] Detiene un contenedor en ejecución.
  • docker kill [ID/nombre del contenedor] Permite matar (detener forzosamente) un contenedor en ejecución.
Mostrar información
  • docker inspect Muestra información útil de un contenedor.

Docker run

Con el comando docker run [opciones] [imagen] [comando] [args]se creará un contenedor a partir de una imagen.

Si Docker no consigue la imagen en el área local procederá a descargarla del repositorio oficial. Necesitamos estar logueados. El comando $ docker login nos ayudará en esa tarea si nos falla nuestra conexión.

Banderas en docker run

Por medio de las opciones que se les indica a los contenedores a través de las banderas, estos pueden ser interactivos. Aunque existen más comandos, estos resultan de mucha utilidad. Algunas banderas recomendables son:

  • -i Esta bandera indica a Docker que se utilizará el STDIN del contenedor.
  • -t Le indica a Docker que se requiere una pseudo-terminal en el contenedor.
  • -d Le dice a Docker que el contenedor correrá en el background.
  • -P Expone los puertos utilizados por un contenedor.
    Con las combinaciones de teclas CNTRL + PQ el servicio de Docker quedará corriendo en el background.

Crear imágenes

Existen tres formas de crear imágenes:

  1. Hacer commit de los contenidos de un contenedor: docker commit [ID/nombre...] [nombre para la imagen]:[tag]
  2. Construir una imagen basada en un Dockerfile.
  3. Importar un archivo Tar a Docker con el contenido de un imagen.

Infografía de contenedores e imágenes en Docker

Contenedores-Docker Contenedores docker la mejor guía

Reader Interactions

Deja un comentario

Tu dirección de correo electrónico no será publicada.

Share This