Docker

Build, Ship and Run

Adrián L. G. P.


Imágenes

Instalar una imagen:

docker pull [imagen]:(tag)

Tag: Versión, si no se especifica, latest.

Crear un docker si iniciar el docker:

docker create [imagen]:(tag)

Ver imagenes descargadas:

docker images (imagen)

Imagen: Ver solo una imagen específica.

Ver imagenes descargadas:

docker images ls
docker images (imagen)

Imagen: Ver solo una imagen específica.

Eliminar una imagen:

docker image rm (imagen)

Inspeccionar una imagen:

docker image inspect (imagen)

Información

Ver la versión de la aplicación docker:

docker --version

Ver la versión más detallada:

docker version

Ver información del programa:

docker info

Ver los eventos de todos los dockers:

docker events

Ver los registros del docker en tiempo real:

docker logs -f [nombre_docker]

Mirar el contenido de un docker:

docker inspect --format=(formato) [docker]

--format=(formato): Opcional. Ejemplo de formato: "{{.Id}}"

docker run

Crear un docker:

docker run [imagen]

Imagen: Si no se descargó previamente, descargará latest.

Iniciar un docker en segundo plano:

docker run -d [imagen]

Persistencia de archivos:

docker run -v [ruta_local]:[ruta_docker]

Así se enlaza una carpeta del docker con una carpeta local para que los archivos no se eliminen al parar el docker.

Modificar una variable de entorno (pej. PUID):

docker run -e [variable_entorno]=[valor]

Especificar el hostname:

docker run -h [hostname]

Ejecución de dockers

Iniciar un docker:

docker start [id]

[id]: El identificador asignado al docker.

Parar un docker:

docker stop [id]

Pausar/Des-pausar un docker:

docker pause [id]
docker unpause [id]

Listar dockers

Ver los dockers en ejecución:

docker ps

Ver todos los dockers: en ejecución y parados:

docker ps -a

Más opciones

Copiar archivos del host al interior de un docker:

docker cp [docker]:[ruta_docker] [ruta_local]

[docker]:_____________: Nombre del docker específico.

________:[ruta_docker]: Donde se copiará dentro del docker.

[ruta_local]: Ruta del/los archivo/s en la máquina virtual.

Abrir un shell en un docker

Shell:

docker exec -it [id] sh

-i: Modo interactivo.

-t: Da a la terminal una interfaz de línea de comandos.

[id]: El identificador asignado al docker.

sh: Abre una sesión de shell. También puede ser bash u otro.

Modificación de un docker

Asignar un nombre:

docker run --name [nuevo_nombre] [docker]

[docker]: Seleccionar el docker a ejecutar.

Modificar el reinicio:

docker run --restart unless-stopped [docker]

unless-stopped: Ejecutar un docker persistentemente a menos de que se pare manualmente.

Limitar recursos al docker

Limitar núcleos de la CPU:

docker run --cpus [Cantidad_CPU] [docker]

[CANTIDAD_CPU]: Número (que puede ser decimal) que indica los núcleos máximos para el docker.

docker run --memory [Cantidad_RAM] [docker]

[CANTIDAD_RAM]: Número que indica la cantidad máxima de RAM para el docker. Ej: "512M" (MiB), "1G" (GiB).

Cualquiera de estas opciones se puede modificar más tarde con:

docker update [Parámetros] [docker]

Volúmenes

Ver volúmenes:

docker volume ls

Crear volumen:

docker volume create [nombre_volumen]

Eliminar volumen:

docker volume rm [nombre_volumen]

Crear una volumen en el host donde se guardarán los datos del docker:

docker run --mount type=volume,src=[nombre_volumen],dst=[ruta_en_docker] [docker]

Todo lo que se haya en "src" se cargarán en "dst".


Redes

Configuración de Red

Ver las redes y de que tipos son para cada docker:

docker network ls

Redireccionar puertos

Puertos:

docker run -p 8089:80 [docker]

Pueden redireccionarse varios puertos a la vez, pero repitiendo "-p".

-p 8089:80: Redirecciona el puerto 8089 del host al 80 del docker.

[docker]: Seleccionar el docker a ejecutar.

docker run -p 127.0.0.2:8089:80 [docker]

-p 127.0.0.2:8089:80: Redirecciona el puerto 8089 de la IP 127.0.0.2 al puerto 80 del docker.

Tipos de redes

Red host:

docker run --netork host [docker]

No tendrá IP ni mapeo de puertos. Solo es un proceso del host.

Red Bridge:

docker run [docker]

No hace falta especificarlo al ser la elegida por defecto. Tiene IP propia (a partir de la red creada por docker) y permite usar mapeo de puertos. El DNS que tendrá será el utilizado en el host.

Modificar redes

Crear una red (tipo bridge u otro):

docker network create --driver (tipo_red) --subnet (ip_red/máscara) --gateway (gateway) [nombre_red]

Driver, Subnet y Gateway son opcionales. Creará una interfaz en el host.

--driver: Puede ser bridge, none, Host, ..

Eliminar una red bridge:

docker network rm [nombre_red]

Cambiar un docker a la nueva red:

docker run --network [nombre_red] [docker]

Ejemplos

Docker "httpd"

Añadir una página html:

docker run -p 80:80 -p 443:443 -d httpd
docker exec -it [id] sh
apt update
apt install nano

./htdocs/index.html: Editar el archivo para cambiar la página default.

Acceder a http://{Tu_IP}:{puerto}

Puerto: El que redirige al docker (Especificado al hacer docker run).

Docker "heimdall"

Sirve para organizar aplicaciones web en un solo lugar ( localhost:[puerto] ):

docker run --name heimdall -e PUID=1000 -e PGID=1000 -e TZ=america/new_york -p 9998:80 -p 9997:443 -v /home/usuario/Descargas/docker_adr:/config --restart unless-stopped linuxserver/heimdall
Fuente - Youtube

© Adrián L. G. P.