Introduccion a Docker
INTRODUCCION A DOCKER
Un contenedro es una instancia de una imagen docker; su uso principal es la capacidad que nos otrorga para correr una aplicaion instalando todas las dependencias que esta necesita sin necesidad de hacerlo en nuestra máquina local , en cualquier sistema operativo. A diferencia de las VM(máquinas Virtuales) los contenedores usan el kernel del host, mientras que en una VM la máquina nueva tiene su propio kernel. De esta manera los contenedores son mas libianos computacionalmente hablando.
Una imagen de un contenedor se crea en un Dockerfile, que se compila en el mismo directorio en el que se encuentra y, posteriormente podremos crear el numero de contenedores con esa imagen que queramos, cada uno representando una máquina distinta.
Para comunicarse con el contenedor tenemos varias vias:
- puertos (tcp/udp) por lo que podremos crear conexiones en redes
- volumenes, que son sistemas de ficheros/directorios compartidos entre el host y el contenedor. Por ejemplo, para poder compartir la pantalla del host y poder reproducir interfaces gráficas dentro del contenedor , tendremos que compartir mediante un volumen el directorio en el que se encuentran los ficheros de Xorg:
/tmp/.X11-unix
.
Algo que he descubierto importante durante este aprendizaje es que me ha compensado reinstalar docker con los paquetes apt
mejor que con snap
, ya que de esta segunda manera habia ciertas capacidades que docker no me permitía ejecutar, ademas de que lo que muestra el CLI de docker es mucho mas intuitivo y visual.
GLOSARIO BÁSICO
``` docker pull
docker
=> equivalente a: docker rm $(docker ps -a -q -f status=exited)
docker push
docker rm <ID/name>
docker tag
docker ps
-a -> todos los containers (sin -a solo los arrancados)
-f -> filtrar output segun una condicion: ej. status=exit
-q -> quiet
docker logs <ID/name>
docker exec
-i -> sesion interactiva
-t -> terminal
docker start <ID/name>
docker stop <ID/name>
docker images
docker build
-t -> nombre de la imagen => -t getting_started
-f -> path a el Dockerfile
docker run
-d -> background
-p -> puertos => -p $HOSTOPORT:$CONTAINERPORT
-v -> volumen => -v $RUTAHOST:$RUTACONTAINER (rutas absolutas)
--rm -> borra el container cuando termina
-i -> sesion interactiva
-t -> terminal ~~~