Herramientas de usuario

Herramientas del sitio


informatica:sistemas_operativos:cursos:docker_avanzado:primeros_pasos

¡Esta es una revisión vieja del documento!


Primeros pasos (Docker avanzado)

Contenido perteneciente al curso Docker avanzado.

El comando ''docker''

El comando docker es nuestra herramienta para interactuar con toda la arquitectura de Docker

La sintaxis es la siguiente:

docker [option] [command] [arguments]

Si introducimos únicamente el comando docker en la terminal nos responderá con la lista de todos los subcomandos de los que dispone:

docker

Lo primero que podemos hacer es verificar la versión de Docker que tenemos instalada en nuestro equipo

docker versión

O consultar los detalles de la instalación y el host:

docker info

Hello, world!

Y como no, todo empieza con un “Hello World”:

docker run hello-world

Busybox

Busybox es una imagen Docker mínima que nos permite trastear de forma rápida

Para ejecutar un único comando dentro de una imagen podemos usar lo siguiente:

docker run busybox echo Hola mundo

Si lo que queremos es abrir una terminal para trastear más en detalle:

docker run -it busybox sh

Iniciar un ubuntu

De igual modo si queremos iniciar un contenedor con Ubuntu es tan sencillo como usar el comando:

docker run -it ubuntu /bin/bash

Veremos que se descarga la imagen desde el registro y se inicia el contenedor. Podemos verificar la versión concreta que está montando:

cat /etc/lsb-reléase

Si lo preferimos podemos especificar la versión concreta de ubuntu que queremos iniciar:

docker run –it ubuntu:14.04 /bin/bash

Podríamos ejecutar de nuevo docker run y se creará un nuevo contenedor, pero la imagen será la misma.

Práctica: explorando el entorno

Inicia un contenedor interactivo de Ubuntu:

docker run –it ubuntu /bin/bash

Explora tu entorno:

hostname
cat /etc/hosts
ifconfig

Instala el editor de textos vim:

apt-get update
apt-get install vim

Sal del entorno con el comando exit y repite el paso 1. ¿Tenemos el comando vim?

Listando contenedores

Con el subcomando ps podemos listar la información de todos los contenedores en ejecución:

docker ps

Si incorporamos la opción –a obtendremos la lista incluyendo los contenedores ya finalizados:

docker ps -a

Si solo necesitamos los IDs de los contenedores podemos usar la opción -q:

docker ps -aq

run, start, attach

Podemos especificar un nombre para nuestro contenedor [a-zA-Z0-9_.-]

docker run --name myUbuntu -it ubuntu /bin/bash

Podemos reiniciar un contenedor parado anteriormente:

docker start {ID}

Por ejemplo:

docker start myUbuntu

Para arrancar el contenedor con los parámetros iniciales podemos usar attach:

docker attach {ID}

También es posible crear un contenedor e iniciar como un demonio (en segundo plano) con la opción -d:

docker run --name myDaemon -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"

Contenedores con nombre personalizado

Por defecto, Docker genera un nombre aleatorio para cada contenedor que creemos.

Sin embargo, podemos especificar un nombre para nuestro contenedor con la opción --name:

docker run --name myUbuntu -it ubuntu /bin/bash

Podemos dar cualquier nombre mientras usemos alguno de los siguientes caracteres de acuerdo a la expresión regular: [a-zA-Z0-9_.-]

logs, top

Para ver lo que está pasando dentro de un contenedor podemos usar el comando logs:

docker logs <ID_CONTENEDOR>|<NOMBRE_CONTENEDOR>

Estos logs no se refiere a los logs del sistema operativo sino a la salida por pantalla de los contenedores. Los logs del contenedor depende de cómo haya sido creada la imagen.

Podemos abrir el streaming para verlo en tiempo real con la opción -f:

docker logs -f myDaemon

Ver los últimos 10 mensajes:

docker logs –f –-tail 10 myDaemon

Podemos pedir que incluya la marca temporal (-t):

docker logs -ft myDaemon

También podemos consultar los procesos en ejecución:

docker top myDaemon

stop, rm

Si se necesita terminar un contenedor de forma externa tenemos el subcomando stop:

docker stop {ID}

Si lo que queremos es parar todos los contenedores en ejecución:

docker stop $(docker ps -q)
  • -q: muestra solo el identificador del contenedor

Para eliminar los contenedores de forma definitiva:

docker rm {ID}

La opción de borrado es irreversible. Por seguridad, no se pueden eliminar contenedores que no estén parados ni con volúmenes asociados.

Para eliminar todos los contenedores:

docker rm $(docker ps -aq)
  • -q: muestra solo el identificador del contenedor

inspect

Para obtener más detalle sobre el contenedor tenemos inspect:

docker inspect {ID}

Podemos usar –-format para obtener detalles concretos:

docker inspect --format='{{.State.Running}}' myDaemon

La sintaxis es JSONPath.

docker inspect -f='{{.NetworkSettings.IPAddress}}' myDaemon

Podemos consultar múltiples contenedores indicando sus nombre uno detrás de otro:

docker inspect --format='{{.Name}} {{.State.Running}}' $(docker ps -aq)

docker images

Para ver las imágenes que tenemos descargadas:

docker images

Ejemplo de salida:

REPOSITORY                         TAG         IMAGE ID       CREATED         SIZE
ubuntu                             latest      3565a89d9e81   2 weeks ago     77.8MB
lscr.io/linuxserver/kavita         latest      8d78b59f517b   6 weeks ago     388MB

El kernel de las imágenes debe ser compatible con el kernel que usa Docker Engine.

Práctica

Crear un contenedor con Ubuntu 23.04 y desde otra terminal detenerlo.

docker run --name paquito -it ubuntu:23.04 /bin/bash

Para detenerlo:

docker stop paquito

Recursos

informatica/sistemas_operativos/cursos/docker_avanzado/primeros_pasos.1696952477.txt.gz · Última modificación: por tempwin