Si no tienes instalado docker al final del post están los link de referencia a la documentación oficial donde aprenderás paso a paso a instalar docker pero si ya lo tienes instalado empecemos por un hola mundo, este es un tutorial donde he anotado para mi uso personal algunos comandos de docker que me son útiles en el día a día. No es un tutorial didactico para ensenar como usar o trabajar con docker mas bien es una bitácora con algunos comandos que te pueden resultar de ayuda en tu labor.
¿Cómo ejecutar un contenedor?
docker run hello-world
Para listar los contenedores que están ejecutándose
docker ps
Para listar todos los contenedores sin importar el estado docker ps -a
CONTAINER ID |
IMAGE |
COMMAND |
CREATED |
STATUS |
PORTS |
NAMES |
49a7aadb3511 |
1c060ad8a1d7 |
"/bin/bash" |
16 hours ago |
Exited (0) 16 hours ago |
|
thirsty_booth |
bfa69d7d5543 |
1c060ad8a1d7 |
"/bin/bash" |
2 hours ago |
Exited (0) 2 hours ago |
|
charming_perlman |
El contenedor tiene nombre( NAMES) y un id unico(CONTAINER ID)
Quiero ver las imágenes que tengo descargadas
docker images o
docker image ls
Para ver las configuraciones del contenedor
docker inspect CONTAINER_ID
Renombrar un contenedor(ojo los nombres de los contenedores no se pueden repetir)
cada docker run(genera un contenedor nuevo)
docker rename CONTAINER_ID NUEVO_NOMBRE
docker run --name nombre_nuevo hello-world
Para ver los logs de un contenedor
docker logs CONTAINER_ID
Para eliminar un contenedor
docker rm CONTAINER_ID
Para eliminarlos todos los contenedores
docker rm $(docker ps -aq)
docker pull nombre_imagen ex:
docker pull ubuntu, este comando solo descarga la imagen requerida
Para ejecutar docker en modo interactivo con la terminal
docker run -it 1c060ad8a1d7(nombre de la imagen IMAGE)
Para correr un contenedor y mapear la salida del contenedor y poder interactuar con el desde afuera.
docker run -d --name nginx -p 8080:80 nginx (-p izquierda puerto de mi ordenador:derecha puerto del contenedor)
Para acceder a un contenedor
docker exec -it 49a7aadb3511 el numero representa al (CONTAINER_ID)
Con este podemos interactuar con un contenedor en ejecucion
docker exec -it nombre_contenedor(NAMES) bash
Como darle acceso a docker que para que use un sistema de archivo que no es del contenedor, en otras palabras a compartir información de mi ordenador con docker, esto nos garantiza de que cuando yo detenga o elimine el contenedor los datos no se borren.
docker run --name postgres -d -v /opt/src:/var/lib/postgresql/data (-v izquierda ruta completa en mi ordenador:ruta dentro del contenedor)
Para ver los volumenes que docker ha creado
docker volume ls
Para eliminar los volumenes que no están en uso
docker volume prune
¿Cómo crear un volumen para ser usado por docker?
docker volume create mydata
docker run --name postgres -d --mount src=mydata,dst=/var/lib/postgresql/data "src" es el destino del volumen creado
"dst" es el destino dentro de docker, con esto podemos compartir información entre contenedores sin necesidad de compartir con el sistema de archivos de nuestro ordenador
¿Cómo crear nuestras propias imagenes con los requisitos que necesitamos?
Creamos una carpeta en ella agregamos un fichero con el nombre Dockerfile y dentro ponemos lo que deseamos que tenga la imagen
El siguiente ejemplo es una imagen con un ubuntu 19.04 y un node
FROM ubuntu:18.04
RUN apt-get update && apt-get upgrade -y
RUN apt-get install -y node \
nodejs
Para ejecutar construir la imagen ejecutamos
docker build -t ubuntu:minuevaimagen . a la izquierda la imagen que va a usar:derecha el nuevo nombre para esta imagen y vean que el comando incluye un "." final
Llego la parte buena,Como desarrollar aplicaciones usando contenedores
Como ya sabemos como construir una imagen básica, continuemos con agregar mas comandos para poder integrar nuestras aplicaciones en una imagen
FROM ubuntu:18.04
RUN apt-get update && apt-get upgrade -y
RUN apt-get install -y node \
nodejs
COPY [".","/opt/src"]
WORKDIR /opt/src
EXPOSE 3000
CMD ["node","index.js"]
Si ahora ejecutamos
docker run --rm -p 3000:3000 nombre_de_mi_imagen vamos a ver ejecutándose la aplicación.
Para enviar variables de entorno usar env ejemplo docker run --rm -p 3000:3000 --env VAIABLE_ENTORNO=MI_VALOR nombre_de_mi_imagen
¿Cómo hacer una red para que colaboren diferentes contenedores?
docker network create --attachable nombre de red y para listar las redes
docker network ls
¿Cómo conectar un contenedor a la red?
docker network connect nombre_red nombre_container
¿Cómo saber que contenedores estan conectados a la red?
docker network inspect
enlaces a la documentación oficial para instalar docker en tu ordenador .
Docker composer
Para construir una imagen a
docker-compose build
Para correr un contenedor a partir de una imagen que ya construimos
docker-compose up -d
¿Cómo instalar docker en window o mac?
Ver en la documentación oficial
¿Cómo instalar docker en linux?
Ver en la documentación ofcial