Contenedores¶
[Actualizado a 26 de septiembre de 2026]
Se deberá seguir los siguientes puntos:
Y entrando en materia...
docker run¶
Lanzando contenedores.
Dockerfile¶
Creando imágenes.
"Sandbox"¶
Llevemos a la práctica lo anterior creando sandboxes o entornos de ejecución aislados.
En primer lugar con un simple alias:
alias py13='docker run -it --rm --name python-3.13 -v ./:/home -w /home python:3.13 python'
Ésto nos ejecutará la aplicación o módulo que queramos enjaulado (chroot) dentro del directorio actual y con acceso reducido a redes(*).
Además, podemos mejorar el aislamiento controlando el usuario interior añadiendo -u $(id -u):$(id -g) o cualquier número que queramos -u 1999:1999.
# Creación del alias:
alias alpine='docker run -it --rm --name alpine-cli -v $(pwd):/app -w /app arangodb/alpineutils-x86_64'
# Ejecución `default` (como root):
alpine id
# Ejecución como usuario local actual:
docker run -u $(id -u):$(id -g) -it --rm --name alpine-cli -v $(pwd):/app -w /app arangodb/alpineutils-x86_64 id
# Ejecución como usuario inexistente en el host:
docker run -u 1999:1999 -it --rm --name alpine-cli -v $(pwd):/app -w /app arangodb/alpineutils-x86_64 id
Aislamiento de red con --net none o --network none:
# Ejecución `default` (como `bridge`). Sólo expuesto lo indicado **explícitamente**, pero el contenedor tiene salida:
## Probamos salida
alpine ping 8.8.8.8
## Probamos entrada
## 1. Lanzamos servicio
py13 -m http.server
## 2. Consultamos servicio desde el host
curl localhost:8000
# `bridge` con reenvío:
## 1. Lanzamos servicio
docker run -p 8000:8000 -it --rm --name python-3.13 -v ./:/home -w /home python:3.13 python -m http.server
## 2. Consultamos
curl localhost:8000
# `bridge` con reenvío modificado:
## 1. Lanzamos servicio
docker run -p 80:8000 -it --rm --name python-3.13 -v ./:/home -w /home python:3.13 python -m http.server
## 2. Consultamos
curl localhost
# Ejecución como `host`. Todo el contenedor expuesto:
## 1. Lanzamos servicio
docker run --net host -it --rm --name python-3.13 -v ./:/home -w /home python:3.13 python -m http.server
## 2. Consultamos
curl localhost:8000
# Ejecución completamente **aislada** con `-net none`:
docker run --net none -it --rm --name python-3.13 -v ./:/home -w /home python:3.13 python ping 8.8.8.8
Plantillas Dockerfile¶
Ejercicios de ampliación¶
- Compilando para navegador con
WASM. - Análisis de datos intensivo con python en el navegador.