Buscar..


Sintaxis

  • docker rm [OPCIONES] CONTENEDOR [CONTENEDOR ...]
  • acoplar acoplador [OPCIONES] CONTENEDOR
  • docker exec [OPCIONES] COMANDO DE CONTENEDORES [ARG ...]
  • docker ps [OPCIONES]
  • troncos acoplables [OPCIONES] CONTENEDOR
  • Docker inspeccionar [OPCIONES] CONTENEDOR | IMAGEN [CONTENEDOR | IMAGEN ...]

Observaciones

  • En los ejemplos anteriores, siempre que el contenedor es un parámetro del comando de ventana acoplable, se menciona como <container> o el container id o <CONTAINER_NAME> . En todos estos lugares puede pasar un nombre de contenedor o un ID de contenedor para especificar un contenedor.

Listado de contenedores

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                     NAMES
2bc9b1988080        redis               "docker-entrypoint.sh"   2 weeks ago         Up 2 hours          0.0.0.0:6379->6379/tcp    elephant-redis
817879be2230        postgres            "/docker-entrypoint.s"   2 weeks ago         Up 2 hours          0.0.0.0:65432->5432/tcp   pt-postgres

docker ps solo imprime contenedores actualmente en ejecución. Para ver todos los contenedores (incluidos los detenidos), use la bandera -a :

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                    PORTS                     NAMES
9cc69f11a0f7        docker/whalesay     "ls /"                   26 hours ago        Exited (0) 26 hours ago                             berserk_wozniak
2bc9b1988080        redis               "docker-entrypoint.sh"   2 weeks ago         Up 2 hours                0.0.0.0:6379->6379/tcp    elephant-redis
817879be2230        postgres            "/docker-entrypoint.s"   2 weeks ago         Up 2 hours                0.0.0.0:65432->5432/tcp   pt-postgres

Para listar contenedores con un estado específico, use la opción de línea de comando -f para filtrar los resultados. Aquí hay un ejemplo de listado de todos los contenedores que han salido:

$ docker ps -a -f status=exited
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                    PORTS                     NAMES
9cc69f11a0f7        docker/whalesay     "ls /"                   26 hours ago        Exited (0) 26 hours ago

También es posible enumerar solo las ID de contenedor con el conmutador -q . Esto hace que sea muy fácil operar el resultado con otras utilidades Unix (como grep y awk ):

$ docker ps -aq
9cc69f11a0f7
2bc9b1988080
817879be2230

Al iniciar un contenedor con la aplicación docker run --name mycontainer1 le da un nombre específico y no un nombre aleatorio (en la forma mood_famous, como nostalgic_stallman), y puede ser fácil encontrarlos con un comando de este tipo

docker ps -f name=mycontainer1

Contenedores de referencia

Los comandos de Docker que toman el nombre de un contenedor aceptan tres formas diferentes:

Tipo Ejemplo
UUID completo 9cc69f11a0f76073e87f25cb6eaf0e079fbfbd1bc47c063bcd25ed3722a8cc4a
UUID corto 9cc69f11a0f7
Nombre berserk_wozniak

Use docker ps para ver estos valores para los contenedores en su sistema.

El UUID es generado por Docker y no puede ser modificado. Puede proporcionar un nombre al contenedor cuando lo inicie docker run --name <given name> <image> . Docker generará un nombre aleatorio para el contenedor si no especifica uno al momento de iniciar el contenedor.

NOTA : El valor del UUID (o un UUID 'corto') puede ser de cualquier longitud siempre que el valor dado sea único para un contenedor

Arranque y parada de contenedores.

Para detener un contenedor en ejecución:

docker stop <container> [<container>...]

Esto enviará al proceso principal en el contenedor un SIGTERM, seguido de un SIGKILL si no se detiene dentro del período de gracia. El nombre de cada contenedor se imprime cuando se detiene.

Para iniciar un contenedor que está detenido:

docker start <container> [<container>...]

Esto iniciará cada contenedor pasado en el fondo; El nombre de cada contenedor se imprime a medida que comienza. Para iniciar el contenedor en primer plano, pase la --attach -a ( --attach ).

Listar contenedores con formato personalizado.

docker ps --format 'table {{.ID}}\t{{.Names}}\t{{.Status}}'

Encontrar un contenedor específico

docker ps --filter name=myapp_1

Encontrar contenedor IP

Para averiguar la dirección IP de su contenedor, use:

docker inspect <container id> | grep IPAddress

o usar el docker inspeccionar

docker inspect --format '{{ .NetworkSettings.IPAddress }}' ${CID}

Reiniciando contenedor contenedor

docker restart <container> [<container>...]

Opción - tiempo : segundos para esperar antes de detener el contenedor (valor predeterminado 10)

docker restart <container> --time 10

Eliminar, eliminar y limpiar contenedores.

docker rm se puede utilizar para eliminar contenedores específicos como este:

docker rm <container name or id>

Para eliminar todos los contenedores puedes usar esta expresión:

docker rm $(docker ps -qa)

Por defecto, la ventana acoplable no eliminará un contenedor que se esté ejecutando. Cualquier contenedor que se esté ejecutando producirá un mensaje de advertencia y no se eliminará. Todos los demás contenedores serán eliminados.

Alternativamente puedes usar xargs :

docker ps -aq -f status=exited | xargs -r docker rm 

Donde el docker ps -aq -f status=exited devolverá una lista de ID de contenedor de contenedores que tienen el estado "Exited".

Advertencia: Todos los ejemplos anteriores solo eliminarán los contenedores 'detenidos'.

Para eliminar un contenedor, independientemente de si está detenido o no, puede utilizar el indicador de fuerza -f :

docker rm -f <container name or id>

Para eliminar todos los contenedores, independientemente del estado:

docker rm -f $(docker ps -qa)

Si desea eliminar solo los contenedores con un estado dead :

docker rm $(docker ps --all -q -f status=dead)

Si desea eliminar solo los contenedores con un estado de exited :

docker rm $(docker ps --all -q -f status=exited)

Estas son todas las permutaciones de los filtros utilizados al enumerar contenedores .

Para eliminar tanto los contenedores no deseados como las imágenes colgantes que usan espacio después de la versión 1.3 , use lo siguiente (similar a la herramienta df Unix):

$ docker system df

Para eliminar todos los datos no utilizados:

$ docker system prune 

Ejecutar comando en un contenedor de ventana acoplable ya existente

docker exec -it <container id> /bin/bash

Es común iniciar sesión en un contenedor que ya se está ejecutando para realizar algunas pruebas rápidas o ver qué está haciendo la aplicación. A menudo denota malas prácticas de uso de contenedores debido a los registros y los archivos modificados deben colocarse en volúmenes. Este ejemplo nos permite iniciar sesión en el contenedor. Esto supone que / bin / bash está disponible en el contenedor, puede ser / bin / sh o cualquier otra cosa.

docker exec <container id> tar -czvf /tmp/backup.tgz /data
docker cp <container id>:/tmp/backup.tgz .

Este ejemplo archiva el contenido del directorio de datos en un tar. Luego con el docker cp puedes recuperarlo.

Registros de contenedores

Usage:  docker logs [OPTIONS] CONTAINER

Fetch the logs of a container

  -f, --follow=false        Follow log output
  --help=false              Print usage
  --since=                  Show logs since timestamp
  -t, --timestamps=false    Show timestamps
  --tail=all                Number of lines to show from the end of the logs

Por ejemplo:

$ docker ps
CONTAINER ID    IMAGE    COMMAND                 CREATED     STATUS       PORTS
ff9716dda6cb    nginx    "nginx -g 'daemon off"  8 days ago  Up 22 hours  443/tcp, 0.0.0.0:8080->80/tcp 

$ docker logs ff9716dda6cb
xx.xx.xx.xx - - [15/Jul/2016:14:03:44 +0000] "GET /index.html HTTP/1.1" 200 511 "https://google.com" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.75 Safari/537.36"
xx.xx.xx.xx - - [15/Jul/2016:14:03:44 +0000] "GET /index.html HTTP/1.1" 200 511 "https://google.com" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.75 Safari/537.36"

Conectar a una instancia que se ejecuta como demonio

Hay dos formas de lograrlo, la primera y la más conocida es la siguiente:

docker attach --sig-proxy=false <container>

Este, literalmente, adjunta su bash al contenedor bash, lo que significa que si tiene un script en ejecución, verá el resultado.

Para separar, simplemente escriba: Ctl-P Ctl-Q

Pero si necesita una forma más amigable y poder crear nuevas instancias de bash, simplemente ejecute el siguiente comando:

docker exec -it <container> bash

Copiando archivo desde / a contenedores

del contenedor al host

docker cp CONTAINER_NAME:PATH_IN_CONTAINER PATH_IN_HOST

de host a contenedor

docker cp PATH_IN_HOST CONTAINER_NAME:PATH_IN_CONTAINER

Si utilizo jess / transmisión desde

https://hub.docker.com/r/jess/transmission/builds/bsn7eqxrkzrhxazcuytbmzp/

, los archivos en el contenedor están en / transmisión / descarga

y mi directorio actual en el host es / home / $ USER / abc, después de

docker cp transmission_id_or_name:/transmission/download .

Tendré los archivos copiados a

/home/$USER/abc/transmission/download

no puede, utilizando docker cp copiar solo un archivo, copie el árbol de directorios y los archivos

Eliminar, eliminar y limpiar los volúmenes de la ventana acoplable.

Los volúmenes de Docker no se eliminan automáticamente cuando se detiene un contenedor. Para eliminar volúmenes asociados al detener un contenedor:

docker rm -v <container id or name>

Si no se especifica el indicador -v , el volumen permanece en el disco como un 'volumen colgante'. Para borrar todos los volúmenes colgantes:

docker volume rm $(docker volume ls -qf dangling=true)

El docker volume ls -qf dangling=true filter devolverá una lista de nombres de volúmenes de la docker volume ls -qf dangling=true acoplable, incluidos los no etiquetados, que no están adjuntos a un contenedor.

Alternativamente, puedes usar xargs :

docker volume ls -f dangling=true -q | xargs --no-run-if-empty docker volume rm

Exportar e importar sistemas de archivos contenedor Docker

Es posible guardar el contenido del sistema de archivos de un contenedor Docker en un archivo de archivo tarball. Esto es útil en una pizca para mover sistemas de archivos de contenedores a diferentes hosts, por ejemplo, si un contenedor de base de datos tiene cambios importantes y de lo contrario no es posible replicar esos cambios en otros lugares. Tenga en cuenta que es preferible crear un contenedor completamente nuevo a partir de una imagen actualizada utilizando un comando de docker run docker-compose.yml o docker-compose.yml archivo docker-compose.yml , en lugar de exportar y mover el sistema de archivos de un contenedor. Parte del poder de Docker es la capacidad de auditoría y la responsabilidad de su estilo declarativo de creación de imágenes y contenedores. Al utilizar la docker export y la docker import , esta potencia se ve reducida debido a la ofuscación de los cambios realizados dentro del sistema de archivos de un contenedor desde su estado original.

docker export -o redis.tar redis

El comando anterior creará una imagen vacía y luego exportará el sistema de archivos del contenedor redis a esta imagen vacía. Para importar desde un archivo tarball, use:

docker import ./redis.tar redis-imported:3.0.7

Este comando creará la imagen redis-imported:3.0.7 , a partir de la cual se pueden crear los contenedores. También es posible crear cambios en la importación, así como establecer un mensaje de confirmación:

docker import -c="ENV DEBUG true" -m="enable debug mode" ./redis.tar redis-changed

Las directivas Dockerfile disponibles para uso con la opción de línea de comando -c son CMD , ENTRYPOINT , ENV , EXPOSE , ONBUILD , USER , VOLUME , WORKDIR .



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow