Actualizado el 28 de Noviembre de 2020

Comandos
Comandos básicos para manejar docker agrupados por funcionalidad.
- docker container run [–interactive|-it] [–tty|-t] [–rm] [–volume|-v v1:v2] [–volumes-from contenedor:ro] [–detach|-d] [–publish|-p p1:p2] [–name nombre] [–network net01 | –net net01] [-e argumento] [–link container] imageid
Arranca un contenedor, hello-world es un contenedor por defecto que se suele usar para verificar que todo está bien, este comando es el mismo que docker run, ahora es docker comando subcomando por una nueva sintaxis- id identificador del contenedor, se pueden usar solo los primeros números
- –detach hace que el contenedor arranque como un proceso separado en lugar de en la propia consola
- –publish x:y esto permite abrir el puerto p1 en el host conectado al puerto p2en el contenedor
- –interactive arranca en modo interactivo emulando un terminal
- –tty emulador de terminal a usar (se suele usar con –interactive), útil para ver procesos ejecutándose y poder pararlos
- –rm borra el contenedor al terminar
- –volume monta el volumen v1 en el host usando la carpeta v2 en el contenedor
- –volumes-from permite montar un volumen a partir de otro contenedor
- –name asigna un nombre al contenedor, registrado en el DNS interno de docker
- –network asocia el contenedor a la red indicada
- -e permite especificar argumentos que se pasarán al contenedor, por ejemplo -e ‘PASSWORD=FooPass’
- –link enlaza el contenedor a otro, de esta forma el contenedor podrá comunicarse con el otro usando su nombre (es un argumento descartado que ya no se usa)
- docker container ls [–all|-a]
Saca un listado de todos los contenedores en ejecución, docker container ps, docker ps son otros alias para este comando- El parámetro –all saca todos los contenedores incluso los detenidos
- docker container exec [–interactive|-it] [-u #] [contenedor] comando
Arranca un comando dentro del contenedor y devuelve la salida al host- contenedor ejecuta la orden en el contenedor indicado
- –interactive arranca en modo interactivo emulando un terminal
- -u para ejecutar con un usuario concreto, por ejemplo 0 sería para root.
- Este comando permite ejecutar docker como root
docker container exec -u 0 -it contenedor bash
- Este comando permite ejecutar docker como root
- docker container inspect imagen
Da información adicional sobre el contenedor, como por ejemplo los volúmenes en uso o la dirección IP asociada - docker container stop contenedor
Para el contenedor, es un alias para docker stop - docker container start contenedor
Arranca un contenedor creado previamente con docker run, es un alias para docker start - docker container kill contenedor
Fuerza el contenedor a cerrarse - docker container rm [-v] contenedor
Borra el contenedor, siempre que no esté funcionando, es un alias para docker rm- -v también elimina el volumen asociado al contenedor
- docker container logs contenedor
Muestra los logs de contenedor (por defecto usa el comando logs) - docker image build [–file server.dockerfile|-f server.dockerfile] [–tag user/image] .
Construye la imagen usando un fichero dockerfile por defecto usará como fichero uno llamado dockerfile (esa es la razón de .) es un alias para docker build- –file fichero el fichero de configuración que se usará para construir la imagen
- –tag user/image la etiqueta de la imagen que se va a usar para construir el contenedor
- docker image history dockersuccinctly/a
Muestra el historial de las capas de la imagen - docker image pull user/image
Se descarga la imagen indicada - docker image tag user/image server:5000/dockerregistry/server
Crea un tag server:5000/dockerregistry/server para la imagen user/image necesario para subir imágenes a un repositorio o referenciarlas de una forma más cómoda, es un alias para docker tag - docker image push localhost:5000/dockerregistry/server
Sube la imagen al registro especificado - docker image rm imagen
Borra la imagen imagen - docker image ls | docker images
Muestra todas las imágenes en la caché local es lo mismo que usar docker images - docker network create net01
Create crea un puente de red llamado ch05 - docker network ls
Muestra todas las redes - docker create imagen
Se crea el contenedor pero no se arranca, acepta los mismos parámetros que docker run - docker version
Devuelve la versión de Docker - docker login
Permite validarse en docker.com - docker volume ls -qf dangling=true
Saca todos los volúmenes dangling básicamente volúmenes huérfanos que no se han borrado al cerrar el contenedor o que no están siendo referenciados por ningún contenedor activo - docker system prune
Borra contenedores sin usar, volúmenes e imágenes
Se puede asociar un nombre al contenedor, este nombre se ve al usar un comando ls, sino se especifica se crea un nombre aleatorio.
En lugar de usar un nombre para contenedor/imagen se puede usar el id de la imagen o el contenedor, también en particular solo con los primeros valores del id es suficiente (sino hay coincidencia).
Scripts
Es posible ejecutar algunos comandos que pueden ayudar en la ejecución de ciertos comandos, por ejemplo:
$(pwd)/src:/app/src
$(pwd) devuelve la ruta y la anexa al resto de la ruta
Estos son otros ejemplos útiles que se pueden ejecutar en Linux
- docker container rm $(docker container ls -a -q)
Elimina todos los contenedores que están parados - docker volume rm $(docker volume ls -qf dangling=true)
Borra todos los volúmenes dangling - docker image rm $(docker image ls -f «dangling=true» -q)
Borra imágenes que no se usan
Docker file
Como nota existe un fichero .dockerimage que se puede usar si se quiere evitar que se copien ciertas carpetas, una idea similar a .gitignore.
Este es un resumen de un fichero docker file, un resumen más amplio aquí:
| Comando | Descripción |
| FROM x [AS y] | Empieza desde la imagen x y le asigna el nombre y |
| RUN y | Ejecuta el comando y en el contenedor, se puede especificar un shell concreto, p.ej: RUN [«/bin/bash», «-c», «source env/bin/activate»] |
| SHELL [«»,»»] | Cambia el shell de ejecución al indicado, se usará este para todas las órdenes subsiguientes hasta que se cambie, p. ej: SHELL [«/bin/bash», » -c»] |
| ARG x y | Establece un valor que se puede usar en tiempo de compilación (equivalente a export) se puede usar en otras instrucciones mediante $x |
| ENV x y | Establece la variable de entorno x con el valor y esta se puede establecer en tiempo de ejecución por línea de comandos mediante el parámetro –env (–env X=Y) |
| COPY x y … z | Copia archivos desde el contexto (carpeta del host desde la que se están ejecutando docker) a la imagen |
| EXPOSE x | Expone el puerto x de tal forma que pueda ser mapeado en el host |
| VOLUME x | Crea un directorio dentro de la imagen que pueda ser mapeado a un almacenamiento externo |
| CMD x | Especifica el comando a ejecutar x cuando arranca el contenedor, en Windows sería [«powershell», «Write-Host ‘hello world!'»] |
| WORKDIR x | Establece la carpeta de trabajo, todos los comandos que se ejecuten irán referidos a esta carpeta |
| ENTRYPOINT x | Ejecuta un script, la opción recomendada cuando se quiere usar el contenedor como un ejecutable |