jueves, 4 de octubre de 2018

Docker - Conceptos básicos y primer contenedor

Empezar con Docker sin unas serie pautas puede convertirse en un dolor de cabeza, por eso hoy traigo una guía definitiva (me vine arriba) de conceptos y comandos básicos para comenzar a usarlo sin morir en el intento.

En la anterior entrada les recomendaba docker-compose por su sencillez y estructura tan visual, pero este consejo iba destinado a aquellas personas que ya controlan Docker.

Lo básico
Sería lógico comenzar por una explicación de qué es y para qué sirve. Docker es un gestor de contenedores. ¿Contenedores? Si "pequeños" encapsulamientos que traen consigo grupos de funcionalidades. Para partir de una base, se suele comparar vulgarmente con pequeñas máquinas virtuales precocinadas.
Una maquina virtual, parte de un sistema operativo, un programa virtualizador y un sistema operativo virtualizado. Esto, obviamente, consume muchos recursos del anfitrión. Docker no virtualiza todo un sistema operativo, usa las librerías del anfitrión. Aquí dejo una gráfica para que se entienda mejor y dejamos a un lado la explicación.

Conceptos
  • Contenedor: Es la instancia en ejecución de una imagen docker
  • Imagen: Es una especie de plantilla para levantar un contenedor de docker. Cuando vas a levantar un contenedor, Docker busca la imagen en el anfitrión, si no está, la intenta descargar de DockerHub automaticamente.
  • Volumen: Define una unidad de almacenamiento "virtual" (puede compartirse entre contenedores)
  • Docker-Compose: Nos ofrece la posibilidad de formar una plantilla/receta a partir de una o varias imágenes ya creadas, pudiendo levantar varios contenedores intercomunicados.
  • DockerHub: Repositorio de imágenes precocinadas oficiales y no oficiales.
  • Dockerfile: Receta para crear tus propias imágenes personalizadas y posteriormente usarlas o subirlas a DockerHub.
Instalación
Estos son los comandos de instalación de Docker:
sudo apt install curl
curl -fsSL get.docker.com -o get-docker.sh
sudo chmod +x get-docker.sh
sh get-docker.sh
Comandos de uso
Los siguientes comandos muestran los tres principales recursos de docker antes mencionados. Todos esos recursos pueden estar referenciados por un ID o un nombre (si se le asignó previamente).:
docker images list
docker container list
docker volume list
Al igual que listamos con "list" (o "ls") podemos borrar con "rm". El resto dejo que lo investigues tu con la guia (docker image/volume/container ?). Hay que controlar bien esos tres comandos para no volverte loco creando decenas de contenedores/volúmenes.

Estos otros sirven para ver el estado de los contenedores encendidos, apagados y todos:
docker ps
docker ps -f status=exited
docker ps -a
 A continuación comandos para encender o apagar contenedores anteriormente creados:
docker start [nombre/ID]
docker stop [nombre/ID]
Vamos con algunos ejemplos de comandos simples para levantar contenedores:
Crea un contenedor con Ubuntu ultima version
docker run ubuntu:latest
Crea un contenedor interactivo con Apache HTTP Server
docker run -it httpd
Crea un contenedor con MySQL y redirección del puerto 3306 al 3306
docker run mysql -p 3306:3306
Crear un contenedor Wordpress con el nombre wp-tienda y puerto 80
docker run --name wp-tienda -p 80:80 wordpress
Una vez tenemos levantados los contenedores, si ejecutamos "docker ps -a" comprobaremos que están en estado "Exited". Tenemos que iniciarlos con el comando "docker container [nombre/ID] start". De esta forma, ya estarán listos para su uso.

Para finalizar, os dejo dos últimos comandos. Para entrar dentro de un contenedor y para ejecutar comandos desde fuera del contenedor:
docker exec -i -t [nombre/ID] /bin/bash
docker exec [nombre/ID] df -h
Y esto a sido todo, cualquier duda la dejáis en los comentarios y tratare de resolverla. 

0 comentarios:

Publicar un comentario