| Author: Eduardo Enriquez

Docker: una peque帽a introducci贸n y algunos comandos 煤tiles para tener a mano.

驴Qu茅 es Docker?

Docker聽es un proyecto de聽c贸digo abierto聽que automatiza el despliegue de聽aplicaciones聽dentro de聽contenedores de software, proporcionando una capa adicional de abstracci贸n y automatizaci贸n de聽Virtualizaci贸n a nivel de sistema operativo聽en聽Linux. Con otras palabras, gracias聽a unas increibles features del聽kernel Linux聽(principalmente cgroups y namespaces), un contenedor de Docker no requiere de un sistema operativo independiente.

container

Docker es una plataforma de software que te permite crear, probar e implementar aplicaciones r谩pidamente. Docker empaqueta software en unidades estandarizadas llamadas contenedores聽que incluyen todo lo necesario para que el software se ejecute, incluidas bibliotecas, herramientas de sistema, c贸digo y tiempo de ejecuci贸n. Con Docker, puede implementar y ajustar la escala de aplicaciones r谩pidamente en cualquier entorno con la certeza de saber que su c贸digo se ejecutar谩.

驴Qu茅 es un container?

A diferencia de una virtual machine (VM) un container es un ambiente mucho m谩s controlado. Los servicios que corren est谩n m谩s controlados de la misma forma que las interfaces de red o los archivos que puede leer y escribir. En este sentido, su aislamiento es una ventaja que incluso trae aparejado un menor聽consumo聽de recursos.聽

A la acci贸n, algunos comandos b谩sicos de docker

PULL -Los containers corren imagenes esas im谩genes se pueden bajar:

docker pull python

IMAGES - Listar todas las imagenes bajadas:

$ docker images

REPOSITORY              TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
python                 latest              c51f86c28340        4 weeks ago         1.109 MB

RUN -聽Correr una imagen en un container:

docker run python

Cuando se llama a run, el cliente de Docker encuentra la imagen (python en este caso), carga el contenedor y luego ejecuta un comando en ese contenedor. Cuando hacemos docker run python a secas no estamos聽proporcionamos un comando y entonces docker corre la image de python en un contendor,聽no ejecuta nada porque no hay comando聽y luego sale. Por eso no hay salida del comando y parece que nada ha pasado.

Fijens茅 la diferencia con este comando:

$ docker run -ti python
Python 3.7.0 (default, Jul 17 2018, 11:04:33)
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

O este otro:

$ docker run python echo 'hola mundo!'
hola mundo!

Tambi茅n podemos usar busybox que es una imagen con casi todas las funcionalidades de un sistema tipo unix.聽

$ docker run -it busybox sh
/ # ls
bin   dev   etc   home  proc  root  sys   tmp   usr   var
/ # ls -l
total 36
drwxr-xr-x    2 root     root         12288 Jul 31 20:20 bin
drwxr-xr-x    5 root     root           360 Aug 15 20:33 dev
drwxr-xr-x    1 root     root          4096 Aug 15 20:33 etc
drwxr-xr-x    2 nobody   nogroup       4096 Jul 31 20:20 home
dr-xr-xr-x  165 root     root             0 Aug 15 20:33 proc
drwx------    1 root     root          4096 Aug 15 20:33 root
dr-xr-xr-x   13 root     root             0 Aug 15 20:33 sys
drwxrwxrwt    2 root     root          4096 Jul 31 20:20 tmp
drwxr-xr-x    3 root     root          4096 Jul 31 20:20 usr
drwxr-xr-x    4 root     root          4096 Jul 31 20:20 var
/ # uname -a
Linux ed5b6deafa10 4.9.93-linuxkit-aufs #1 SMP Wed Jun 6 16:55:56 UTC 2018 x86_64 GNU/Linux

Tambi茅n incluso podemos correr un聽container con ubuntu 16.04:

docker run ubuntu:16.04

Si corremos a secas el run sin haber hecho previamente un pull, docker聽se encargar谩 de bajarse la imagen de Ubuntu 16.04 para poder ejecutarla en nuestro container. Vale aclarar que hay un repositorio p煤blico聽de imagenes. En dicho repositorio Ubuntu tiene un lugar oficial:聽https://hub.docker.com/_/ubuntu/

Bueno pero para correr el container de modo interactivo, esto es no solo correr el container con una imagen de Ubuntu y acceder adentro de dicho container, el comando es:

docker run -it ubuntu:16.04

Los parametros -it especifican, por un lado, el modo interactivo y por otro lado la posibilidad de acceder a una pseudo聽interfaz de terminal TTY. Recordemos la diferencia entre una terminal y una consola:

  • terminal = tty = entorno de entrada y salida de texto (stdin and stdout)
  • console = ser铆a una terminal fisica con acceso a terminal
  • shell = es un int茅rprete de linea de comandos

PS - Fijarse los containers que est谩n corriendo:

docker ps

Si queremos ver todos incluso lo que no estan corriendo:

$ docker ps -a

CONTAINER_ID  IMAGE      COMMAND       CREATED       STATUS     PORTS NAMES
ed5b6deafa10  busybox    "sh"          25min ago     Exited (0)       sad_haibt
fe5258b6b9ba  python:3.7 "echo holas!" About 1hr ago Exited (0)       vigilant_swirles

BORRAR - Para eliminar alguna imagenes necesitamos usar rmi un alias para remove images (para forzar tenemos -f en el caso que hay un container corriendo esa imagen)
docker rmi <hash de imagen>

Para eliminar un container:

docker rm <hash>

docker images

Para seguir leyendo:聽algunos tips m谩s para ir perdi茅ndole el miedo a las im谩genes y los contenedores

Related Posts