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