Docker
- sipsonis
Comando útiles de 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.
Instalación
Ejecutar el comando Docker sin sudo
De forma predeterminada, el comando docker solamente puede ejecutarse por el usuario root o por un usuario del grupo docker, el cual se crea automáticamente durante la instalación de Docker.
Los siguientes pasos son para agregar nuestro usuario al grupo docker.
Crear grupo docker si es que no existe:
$ sudo addgroup docker
Añadir nuestro usuario al grupo:
$ sudo usermod -aG docker ${USER}
Para aplicar la nueva membresía de grupo debe cerrar sesión en el servidor y volver a iniciarla, o puede escribir lo siguiente:
$ su - ${USER}
Confirmar que se haya agregado su usuario al grupo de docker escribiendo:
$ id -nG
Docker Hub
Login:
$ docker login
Commitear una imagen:
$ docker commit <contenedor_id> <user>/<repository>:<tag>
Subir una imagen:
$ docker push <usuario>/<repositorio>:<tag>
Imágenes
Crear una imagen a partir de un archivo Dockerfile:
$ docker build -t <usuario>/<repositorio>:<tag> .
Correr una imagen:
$ docker run -it <nombre>:<tag>
$ docker run -it <nombre>:<tag> bash
it: Terminal interactiva
Correr una imagen y renombrarla:
$ docker run --name <name> -it <nombre>:<tag>
Renombrar por id:
$ docker <tag> <imagen_id> <nombre_nuevo>
Listar imágenes:
$ docker images
Ver el contenido de una imagen:
$ docker inspect <nombre>
Borrar imagen por id:
$ docker rmi <imagen_id>
$ docker rmi --force <imagen_id>
Borrar todas las imágenes:
$ docker image prune
$ docker rmi $(docker images -q)
$ docker image prune -a --filter "until=12h"
Eliminar imagenes colgantes:
$ docker rmi $(docker images --filter dangling=true -q)
Contenedores
Correr un contenedor interactivo a travez de una terminal:
$ docker run -it <imagen>
Correr un contenedor asignadole un nombre:
$ docker run -it --name <nombre_contenedor>
Correr un contenedor con volúmenes de datos:
$ docker run -v <ruta_achivo_local>:<ruta_archivo_contenedor> -it <imagen>
Correr un contenedor asignándole una red(en este caso la misma que afuera):
$ docker run --net=host -it <nombre>
Correr un contenedor y destruirlo luego:
$ docker run --rm -it <imagen>
Pegarse a un contenedor que corre en background:
$ docker attach <container_id>
Ingresar dentro de un contenedor:
$ docker exec -it <contenedor_id> bash
$ docker exec -it <contenedor_id> /bin/bash
$ docker exec -it <contenedor_id> sh
Listar contenedores:
$ docker ps -a
Listar los contenedores parados:
$ docker ps -aq
Ver información utíl de un contenedor:
$ docker inspect <id/nombre>
$ docker port <nombre_contenedor>
Ver la historia de un contenedor:
$ docker history <id/nombre>
Parar contenedor:
$ docker stop <contenedor_id>
Parar todos los contenedores:
$ docker stop $(docker ps -aq)
Borrar contenedor:
$ docker rm <contenedor_id>
Borrar contenedores parados(similiar a xargs):
$ docker container prune
$ docker rm $(docker ps -a -q)
$ docker container prune --filter "until=12h"
Copiar archivos hacia el contenedor:
$ docker cp foo.txt mycontainer:/foo.txt
Copiar archivos desde el contenedor:
$ docker cp mycontainer:/foo.txt foo.txt
Redes
Listar todas las redes:
$ docker network ls
$ docker network ps
Borrar redes una por una:
$ docker network rm <id>
Borrar todas las redes:
$ docker network prune -a --filter "until=12h"
$ docker network prune
Volúmenes
Crear un volumen:
$ docker volume create <nombre>
Inspeccionar un volumen:
$ docker inspect <nombre>
Listar todos los volúmenes:
$ docker volume ls
Borrar volumen colgante:
$ docker volume rm $(docker volume ls --filter dangling=true -q)
Borrar todos los volúmenes:
$ docker volume rm prune
Docker compose
Construir los servicios:
$ docker-compose -f docker-compose.yml build
Correr servicios:
$ docker-compose -f docker-compose.yml up
Parar los contenedores:
$ docker-compose -f docker-compose.yml stop
Bajar los servicios y remueve los contenedores creados en una ejecución anterior:
$ docker-compose -f docker-compose.yml down --remove-orphans
Correr servicios recontruyendo los servicios:
$ docker-compose -f docker-compose.yml up --build
Listar contenedores que se están ejecutando:
$ docker-compose ps
Para debbugear un servico en específico:
$ docker-compose ps
$ docker stop -f <id>
$ docker-compose run --rm --service-ports <servicio>
Correr comandos:
$ docker-compose run --rm <contenedor> <comando>
Ver lo logs de un contenedor:
$ docker-compose logs <contenedor>
Levantar contenedores sin cache:
$ docker-compose up --force-recreate
Sistema
Memoría utilizada por docker:
$ docker stats
Extras
Borrar todo:
$ docker system prune -a -f --volumes