meta data de esta página
  •  

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
virtualizacion:docker:comandos [302021/06/ 12:12] lcvirtualizacion:docker:comandos [182023/01/ 13:37] (actual) – editor externo 127.0.0.1
Línea 1: Línea 1:
 +{{tag>docker comandos }}
 +
 +===== Comandos para Docker =====
 +==== Comandos de información ====
 +<sxh bash>docker info</sxh>
 +<sxh>docker version</sxh>
 +
 +==== Gestión de imágenes ====
 +=== Buscar una imagen ===
 +Para buscar una imagen usamos **docker search <imagen_a_buscar>**, por ejemplo <sxh>docker search centos</sxh>
 +=== Listar las imágenes que tenemos descargadas ===
 +<sxh>sudo docker images ls</sxh>
 +=== Obtener información sobre una imagen concreta ===
 +<sxh>sudo docker history <imagen></sxh>
 +=== Descargar una imagen ===
 +<sxh>sudo docker pull <nombreimagen</sxh>
 +
 +Por ejemplo para descargar la imagen de kali linux
 +<sxh>sudo docker pull kalilinux/kali-linux-docker</sxh>
 +== Obtener detealles sobre una imagen ==
 +<sxh>docker inspect <imagen></sxh>
 +
 +=== Borrar una imagen ===
 +<sxh>docker image rm </sxh>
 +<sxh>docker rmi</sxh>
 +
 +
 +==== Gestión de Contenedores ====
 +=== Crear un contenedor ===
 +<sxh>docker create --name <nombre> <imagen></sxh>
 +Por ejemplo <sxh>create --name mihola holamundo</sxh>. Crea un contenedor llamado mihola, usando una imagen que se llama holamundo.
 +<note>Lo crea pero no lo arranca</note>
 +
 +=== Arrancar un Contendor ===
 +<sxh>sudo docker run -opciones nombre_imagen o codigo_imagen </sxh>
 +<sxh>sudo docker run -t -i kalilinux/kali-linux-docker /bin/bash</sxh>
 +<note>la opción -i es modo interactivo .</note>
 +
 +Por defecto docker usa nombre de contenedores aleatorios, si queremos que nuestro contenedor tenga un nombre determinado haremos 
 +<sxh>docker run --name <nombreimagen></sxh>
 +
 +=== Arrancar un contenedor mapeando puertos ===
 +<sxh>docker run -p <puerto host>:<puerto contenedor> <imagen></sxh>
 +
 +Por ejemplo para exponer los puerto de un contenedor con ngnix
 +<sxh>docker run -p 80:80 -p 443:443 nginx:latest</sxh>
 +<note> 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.
 +<sxh>docker run -P --name micontenedor miimagen:latest</sxh></note>
 +
 +=== Ver los contenedores disponibles ===
 +Para que nos muestre los contenedores en ejecución <sxh>docker ps</sxh>
 +Para que nos muestr todos los contenedores, activos o inactivos <sxh>docker ps -a </sxh>
 +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).
 +<sxh>docker run -i -t b72879fa579a /bin/bash</sxh>
 +
 +O también:
 +<sxh>docker run -i -t ubuntu:14.04 /bin/bash</sxh>
 +<note>Para salir de una imagen, debes presionar CTRL+D.</note>
 +
 +
 +=== Borrar contenedores sin uso ===
 +con el comando <sxh>docker system prune </sxh> 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
 +<note>Mucho ojo al ejecutar este comando en sistemas en producción </note>
 +
 +
 +=== 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
 +<sxh>docker tag id_imagen repositorio:etiqueta</sxh>
 +
 +Para llamar a dicho contenedor por la etiqueta, hacemos lo mismo que cuando lo llamamos por el  id pero poniendo ahora la etiqueta 
 +<sxh>docker tun -i -t repositorio:etiqueta /bin/bash</sxh>
 +
 +Es habitual por ejemplo a una imagen que tengamos creada ponerle una etiqueta de latest para indicar que es la última versión disponible
 +<sxh>docker tag miimagen:version miimagen:latest</sxh>
 +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 ====
 +<sxh>docker start imagenid</sxh> o bien con <sxh>docker start nombre</sxh>
 +Con estos comandos arrancamos el contenedor pero no nos conectamos al mismo. Si queremos acceder ejecutamos <sxh>docker attach id</sxh>
 +=== Parar contenedor===
 +Para parar un contenedor <sxh>docker stop imagenid_o nombre </sxh>
 +
 +Para parar todos los contenedores <sxh>docker stop $(docker ps -a -q)</sxh>
 +
 +=== 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.
 +<sxh>docker commit -m "comentario" -a "autor" <identificadordelcontenedor> nuevonombreimagen</sxh>
 +
 +Por ejemplo
 +<sxh>docker commit -m "Imagen actualizada centos" -a "LC" c605d57c9aa1 centosactualizado:v1</sxh>
 +
 +Con commit creamos una nueva imagen en nuestro repositorio local.
 +
 +=== Borrar Contenedor ===
 +<sxh>docker rm <contenedor> </sxh>
 +<note>Se pueden borrar múltiples contenedores si se especifican múltiples ids</note>
 +
 +
 +Para borrar todos los contenedores <sxh>docker rm $(docker ps -a -q)</sxh>
 +
 +Probar <sxh>docker container rm $(docker container ls -a -q)</sxh>
 +
 +
 +=== Copiar desde un contenedor ===
 +Para copiar un fichero desde un contenedor a nuestra máquina hacemos
 +<sxh>docker cp <nombre_contenedor o id>:<ruta_al_fichero> <directorio_local_a_donde_copiar></sxh>
 +
 +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 
 +<sxh>docker exec <nombre o id contenedor> <comando></sxh>
 +
 +Por ejemplo para iniciar un shell intereactivo 
 +<sxh>docker exec -it  micontenedor sh</sxh>
 +
 +También
 +<sxh>docker exec -it micontenedor bash</sxh>
 +
 +Para sar un listado de los procesos que corren en el contenedor
 +<sxh>docker exec micontenedor ps </sxh>
 +
 +=== 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 
 +<sxh>docker run -d --name tomcat:v8 miimagentomcat</sxh>
 +
 +=== logs ===
 +Para ver los logs que está generando un contenedor, ejecutaríamos el comando <sxh>docker logs <nombre contenedor o id></sxh>
 +
 +=== Estadísticas de uso ===
 +con el comando stats obtenemos estadísticas de uso y consumo de nuestro contenedor
 +<sxh>docker stats <nombre contenedor o id></sxh>
 +
 +
 +
 +
 +
 +
 +