meta data de esta página
Comandos para Docker
Comandos de información
docker info
docker version
Gestión de imágenes
Buscar una imagen
Para buscar una imagen usamos docker search <imagen_a_buscar>, por ejemplo
docker search centos
Listar las imágenes que tenemos descargadas
sudo docker images ls
Obtener información sobre una imagen concreta
sudo docker history <imagen>
Descargar una imagen
sudo docker pull <nombreimagen
Por ejemplo para descargar la imagen de kali linux
sudo docker pull kalilinux/kali-linux-docker
Obtener detealles sobre una imagen
docker inspect <imagen>
Borrar una imagen
docker image rm
docker rmi
Gestión de Contenedores
Crear un contenedor
docker create --name <nombre> <imagen>Por ejemplo
create --name mihola holamundo. Crea un contenedor llamado mihola, usando una imagen que se llama holamundo.
Arrancar un Contendor
sudo docker run -opciones nombre_imagen o codigo_imagen
sudo docker run -t -i kalilinux/kali-linux-docker /bin/bash
Por defecto docker usa nombre de contenedores aleatorios, si queremos que nuestro contenedor tenga un nombre determinado haremos
docker run --name <nombreimagen>
Arrancar un contenedor mapeando puertos
docker run -p <puerto host>:<puerto contenedor> <imagen>
Por ejemplo para exponer los puerto de un contenedor con ngnix
docker run -p 80:80 -p 443:443 nginx:latest
docker run -P --name micontenedor miimagen:latest
Ver los contenedores disponibles
Para que nos muestre los contenedores en ejecución
docker psPara que nos muestr todos los contenedores, activos o inactivos
docker ps -aLos campos que muestra son:
- CONTAINER ID = Identificador único del contenedor
- IMAGE = La imagen utilizado para la creación del contenedor
- COMMAND = Comando ejecutado en el momento de crear el contenedor
- CREATED = Muestra el tiempo de vida que tiene el contenedor
- STATUS = Muestra el estado actual del contenedor
- PORTS = Muestra el puerto que la aplicación dentro del contenedor utiliza para recibir conexiones
- NAMES = Nombre del contenedor
Acceder a un contenedor
Para acceder al contenedor, además de crearlo, se puede hacer de dos maneras. Una es haciendo referencia al IMAGE ID y otra al repositorio (REPOSITORY) y la etiqueta (TAG).
docker run -i -t b72879fa579a /bin/bash
O también:
docker run -i -t ubuntu:14.04 /bin/bash
Borrar contenedores sin uso
con el comando
docker system prunecon la opción -a elimina_
- los contenedores que no se usan
- los volúmenes que no se usan
- las imágenes que no se están usando
- las redes que no se están usando
Etiquetar
También podemos poner una etiqueta a nuestros contenedores, y llamarlo por dicha etiqueta, lo cual nos permitirá organizar mejor todos nuestros contenedores. Para poner una etiqueta
docker tag id_imagen repositorio:etiqueta
Para llamar a dicho contenedor por la etiqueta, hacemos lo mismo que cuando lo llamamos por el id pero poniendo ahora la etiqueta
docker tun -i -t repositorio:etiqueta /bin/bash
Es habitual por ejemplo a una imagen que tengamos creada ponerle una etiqueta de latest para indicar que es la última versión disponible
docker tag miimagen:version miimagen:latestDe esta forma si hacemos un docker images veremos que la misma imagen aparece dos veces pero si nos fijamos en campo image id es la misma imagen. Es decir es como si hubieramos creado un enlace para poder llamar a la misma imagen.
Iniciar contenedor
docker start imagenido bien con
docker start nombreCon estos comandos arrancamos el contenedor pero no nos conectamos al mismo. Si queremos acceder ejecutamos
docker attach id
Parar contenedor
Para parar un contenedor
docker stop imagenid_o nombre
Para parar todos los contenedores
docker stop $(docker ps -a -q)
Salir
Escribiendo exit en nuestro contenedor, o Pulsando CTRL+D salimos del mismo pero parando la ejecución del mismo. Si queremos salir del contenedor pero que se siga ejecutando debemos presionar CTRL, después P y luego Q
Guardar Contenedor
Las imágenes son plantillas de sólo lectura, que usamos de base para lanzar contenedores. Por tanto todo lo que hagamos en el contenedor sólo persiste en ese contenedor y NO se guardan en la imagen.
Si queremos que dichos cambios sean permanentes, debemos crear una nueva imagen con el contenedor personalizado.
docker commit -m "comentario" -a "autor" <identificadordelcontenedor> nuevonombreimagen
Por ejemplo
docker commit -m "Imagen actualizada centos" -a "LC" c605d57c9aa1 centosactualizado:v1
Con commit creamos una nueva imagen en nuestro repositorio local.
Borrar Contenedor
docker rm <contenedor>
Para borrar todos los contenedores
docker rm $(docker ps -a -q)
Probar
docker container rm $(docker container ls -a -q)
Copiar desde un contenedor
Para copiar un fichero desde un contenedor a nuestra máquina hacemos
docker cp <nombre_contenedor o id>:<ruta_al_fichero> <directorio_local_a_donde_copiar>
También podemos hacerlo a la inversa. Desde la máquina local al contenedor
Ejecutar comando
Podemos ejecutar un comando dentro de un contenedor con
docker exec <nombre o id contenedor> <comando>
Por ejemplo para iniciar un shell intereactivo
docker exec -it micontenedor sh
También
docker exec -it micontenedor bash
Para sar un listado de los procesos que corren en el contenedor
docker exec micontenedor ps
BACKGROUND
Con la opción -d Nos permite ejecutar un contenedor en segundo plano y poder correr comandos sobre el mismo en cualquier momento mientras esté en ejecución. Se dice que es un contenedor demonizado y se ejecutará indefinidamente
por ejemplo
docker run -d --name tomcat:v8 miimagentomcat
logs
Para ver los logs que está generando un contenedor, ejecutaríamos el comando
docker logs <nombre contenedor o id>
Estadísticas de uso
con el comando stats obtenemos estadísticas de uso y consumo de nuestro contenedor
docker stats <nombre contenedor o id>