{{tag>docker comandos }} ===== 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 **, 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 === Descargar una imagen === sudo docker pull Por ejemplo para descargar la imagen de kali linux sudo docker pull kalilinux/kali-linux-docker == Obtener detealles sobre una imagen == docker inspect === Borrar una imagen === docker image rm docker rmi ==== Gestión de Contenedores ==== === Crear un contenedor === docker create --name Por ejemplo create --name mihola holamundo. Crea un contenedor llamado mihola, usando una imagen que se llama holamundo. Lo crea pero no lo arranca === Arrancar un Contendor === sudo docker run -opciones nombre_imagen o codigo_imagen sudo docker run -t -i kalilinux/kali-linux-docker /bin/bash la opción -i es modo interactivo . Por defecto docker usa nombre de contenedores aleatorios, si queremos que nuestro contenedor tenga un nombre determinado haremos docker run --name === Arrancar un contenedor mapeando puertos === docker run -p : Por ejemplo para exponer los puerto de un contenedor con ngnix docker run -p 80:80 -p 443:443 nginx:latest Si estamos usando una imagen creada con dockerfile en la que hemos definido un puerto . Entonces usaremos la opción P mayúscula para que el mismo nos mapee un puerto aleatorio del host al que hemos definido en el contenedor. docker run -P --name micontenedor miimagen:latest === Ver los contenedores disponibles === Para que nos muestre los contenedores en ejecución docker ps Para que nos muestr todos los contenedores, activos o inactivos docker ps -a Los 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 Para salir de una imagen, debes presionar CTRL+D. === Borrar contenedores sin uso === con el comando docker system prune con 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 Mucho ojo al ejecutar este comando en sistemas en producción === 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:latest De 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 imagenid o bien con docker start nombre Con 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" 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 Se pueden borrar múltiples contenedores si se especifican múltiples ids 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 : 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 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 === Estadísticas de uso === con el comando stats obtenemos estadísticas de uso y consumo de nuestro contenedor docker stats