Una Lista de Comandos de Docker Útiles

Consejo Breve

Aquí una lista de comandos de Docker útiles recolectados al trabajar con contenedores.

Contenedores

  • Crear (ejecutar) contenedores
docker run --name contenedor --detach image_name

la opción detach le dice a Docker que ejecute este contenedor en segundo plano.

docker run --name contenedor -d --publish porthost:portcontainer image_name
docker run -d -p 7706:3306 --name contenedordb image_name

la opción publish expone el puerto del contenedor hacia un puerto del anfitrión para su acceso remoto.

  • Listar los contenedores en ejecución
docker ps
docker container ls
  • Listar los contenedores en ejecución y detenidos
docker ps -a
docker container ls -a
  • Manejar los contenedores
docker start contenedor
docker restart contenedor
docker stop contenedor
docker kill contenedor
  • Iniciar/detener múltiples contenedores
docker start contenedor1 contenedor2
docker stop contenedor0 contenedor1 contenedor2
  • Eliminar contenedores
docker container rm contenedor
Acceder a los Contenedores
  • Acceder a un contenedor como root
docker exec -it contenedor bash
  • Acceder a un contenedor como usuario normal
docker exec -it --user pato contenedordb bash
Ejecutar Comandos desde Fuera del Contenedor
  • Ejecutar programas instalados
docker exec -it patomaxscale maxctrl list servers
  • Ejecutar una consulta sql
docker exec -it patomariadb mysql -e "select * from taller.tg1"
Copiar Archivos Desde/Hacia un Contenedor
  • Copiar desde el contenedor hacia un directorio del anfitrión
docker cp patomaster:/home/pato/masterfull.sql .
  • Copiar desde el anfitrión hacia un directorio del contenedor
docker cp masterfull.sql patoslave:/home/pato/masterfull.sql
Información del Contenedor
  • Revisar el registro del contenedor
docker logs patomaxgalera | tail

Esta salida proviene del servicio/programa principal registrado en el parámetro CMD de la imagen usada por el contenedor

  • Revisar el mapeo de puertos del contenedor
docker port contenedor
Imágenes
  • Buscar y descargar una imagen del Docker Hub
docker search mariadb
docker pull mariadb
  • Listar las imágenes
docker images
docker image ls
  • Crear una imagen desde un contenedor existente
docker commit contenedor
docker tag image_id patomx/imagen
docker commit contenedor patomx/imagen
  • Subir una imagen propia hacia el Docker Hub
docker login
docker push patomx/imagen
  • Construir una imagen usando Dockerfile
vi Dockerfile
FROM sistema_operativo (ubuntu)
ENV variables_de_ambiente
RUN apt install -y package 
RUN wget https://... && \
    dpkg -i 
COPY archivo_anfitrion archivo_contenedor
EXPOSE puertos
CMD service ... start & tail -F /var/log/__.log
docker build --tag patomx/patomaxscale .
  • Eliminar imágenes
docker image rm imagen
Volúmenes
  • Crear volumen
pato@patocontainer ~ $ docker volume create --name volnew

Los volúmenes tambien pueden ser creados al crear un contenedor con el comando
docker run ... -v newvolume:path

  • Listar volúmenes
docker volume ls
  • Usar un directorio local como volumen
docker run -d --name contenedorl -v /home/pato/data:/var/lib/mysql patomx/imagen
docker run -d --name contenedor2 -v /home/pato/config:/etc/mysql -v patovolgm:/var/lib/mysql patomx/imagen
  • Copiar el contenido de un volumen hacia otro volumen
docker run --rm -i -t -v patovol1:/origen -v patovol2:/destino alpine sh -c "cp -avr /origen/* /destino"
  • Usar un contenedor para compatir su volumen
docker run --name contenedor2 --volumes-from contenedor1 imagen
  • Eliminar volúmenes
docker volume rm volumen1
  • Eliminar todos los volúmenes no usados por algún contenedor
docker volume prune
Red
  • Crear una red (tipo puente)
docker network create --driver bridge pato-net
  • Listar redes
docker network ls
  • Eliminar redes
docker network rm pato-net
Comandos Globales de Docker

Mostrar información detallada del espacio usado

docker system df -v

Remover todos los contenedores, redes e imagenes no usados

docker system prune
Google Cloud Container-Optimized OS

Cuando usamos una instancia virtual como anfitrión de Docker para desplegar contenedores usualmente agregamos una area swap al Container-Optimized OS

  • Crear el área swap por primera vez
sudo sysctl vm.disk_based_swap=1
sudo fallocate -l 512M /var/swapfile
sudo chmod 600 /var/swapfile
sudo mkswap /var/swapfile
sudo swapon /var/swapfile
  • Recrear el área swap para instancias anfitrión reconstruidas
sudo sysctl vm.disk_based_swap=1
sudo swapon /var/swapfile