feat: add fuse-overlayfs storage driver for Docker-in-Docker
Some checks failed
release / release-default (push) Failing after 16s

- Install fuse-overlayfs package in Dockerfile
- Configure Docker daemon to use fuse-overlayfs storage driver
- Add daemon.json configuration in entrypoint.sh
- Update documentation in README.md and README.es.md

This enables Docker-in-Docker to work efficiently in unprivileged
containers without requiring the overlay2 driver.
This commit is contained in:
2026-02-11 10:53:17 -05:00
parent d0c3b02677
commit fe58d6a3d1
4 changed files with 21 additions and 5 deletions

View File

@@ -30,7 +30,7 @@ RUN set -eux; \
apt-get upgrade -y && \ apt-get upgrade -y && \
apt-get install --no-install-recommends -y \ apt-get install --no-install-recommends -y \
bash bash-completion ca-certificates curl dbus default-jre doas dos2unix dumb-init file \ bash bash-completion ca-certificates curl dbus default-jre doas dos2unix dumb-init file \
fuse3 gh git gnupg golang iproute2 iptables jq lsb-release lsof make nano net-tools nodejs npm \ fuse3 fuse-overlayfs gh git gnupg golang iproute2 iptables jq lsb-release lsof make nano net-tools nodejs npm \
openssh-client passwd patch pipx python3 python3-pip python3-venv shellcheck siege \ openssh-client passwd patch pipx python3 python3-pip python3-venv shellcheck siege \
sudo tar tree uidmap unzip virtualenv wget xz-utils; \ sudo tar tree uidmap unzip virtualenv wget xz-utils; \
\ \

View File

@@ -5,7 +5,7 @@ Un contenedor de desarrollo impulsado por [code-server](https://github.com/coder
## Características ## Características
- 💻 code-server (VS Code en el navegador) - 💻 code-server (VS Code en el navegador)
- 🐳 Docker-in-Docker (DinD) - 🐳 Docker-in-Docker (DinD) con storage driver fuse-overlayfs
- 🔐 Autenticación por contraseña o hash - 🔐 Autenticación por contraseña o hash
- 👤 Configuración dinámica de usuario (UID, GID, contraseña) - 👤 Configuración dinámica de usuario (UID, GID, contraseña)
- ⚙️ Herramientas preinstaladas: Docker, AWS CLI v2, kubectl, eksctl, Node.js, Python, Java, pre-commit, y más. - ⚙️ Herramientas preinstaladas: Docker, AWS CLI v2, kubectl, eksctl, Node.js, Python, Java, pre-commit, y más.
@@ -60,7 +60,7 @@ Inicia sesión con las credenciales de tu archivo `.env`.
## Herramientas Incluidas ## Herramientas Incluidas
- Docker CLI - Docker CLI (con storage driver fuse-overlayfs para contenedores sin privilegios)
- AWS CLI v2 - AWS CLI v2
- kubectl (`v1.33.0`) - kubectl (`v1.33.0`)
- eksctl - eksctl
@@ -70,6 +70,10 @@ Inicia sesión con las credenciales de tu archivo `.env`.
- pre-commit - pre-commit
- siege, jq, git, y más. - siege, jq, git, y más.
## Storage Driver de Docker
Este contenedor usa `fuse-overlayfs` como storage driver de Docker, lo que permite que Docker-in-Docker funcione eficientemente en contenedores sin privilegios sin requerir el driver `overlay2`. La configuración se establece automáticamente en `/etc/docker/daemon.json` durante el inicio del contenedor.
## Limpieza ## Limpieza
```bash ```bash

View File

@@ -5,7 +5,7 @@ A developer container powered by [code-server](https://github.com/coder/code-ser
## Features ## Features
- 💻 code-server (VS Code in the browser) - 💻 code-server (VS Code in the browser)
- 🐳 Docker-in-Docker (DinD) - 🐳 Docker-in-Docker (DinD) with fuse-overlayfs storage driver
- 🔐 Password or hashed password auth via `.env` - 🔐 Password or hashed password auth via `.env`
- 👤 Dynamic user configuration (UID, GID, password) - 👤 Dynamic user configuration (UID, GID, password)
- ⚙️ Preinstalled: Docker, AWS CLI v2, kubectl, eksctl, Node.js, Python, Java, pre-commit, etc. - ⚙️ Preinstalled: Docker, AWS CLI v2, kubectl, eksctl, Node.js, Python, Java, pre-commit, etc.
@@ -60,7 +60,7 @@ Login using the credentials defined in `.env`.
## Tooling Included ## Tooling Included
- Docker CLI - Docker CLI (with fuse-overlayfs storage driver for unprivileged containers)
- AWS CLI v2 - AWS CLI v2
- kubectl (`v1.33.0`) - kubectl (`v1.33.0`)
- eksctl - eksctl
@@ -70,6 +70,10 @@ Login using the credentials defined in `.env`.
- pre-commit - pre-commit
- siege, jq, git, etc. - siege, jq, git, etc.
## Docker Storage Driver
This container uses `fuse-overlayfs` as the Docker storage driver, which allows Docker-in-Docker to work efficiently in unprivileged containers without requiring the `overlay2` driver. The configuration is automatically set in `/etc/docker/daemon.json` during container startup.
## Clean Up ## Clean Up
```bash ```bash

View File

@@ -91,6 +91,14 @@ mkdir -p "$HOME_DIR/.local/pipx/logs"
chown -R "$DOCKER_USER:$DOCKER_USER" "$HOME_DIR/.local" chown -R "$DOCKER_USER:$DOCKER_USER" "$HOME_DIR/.local"
chown -R "$DOCKER_USER:$DOCKER_USER" "$CONFIG_DIR" chown -R "$DOCKER_USER:$DOCKER_USER" "$CONFIG_DIR"
echo "[entrypoint] Configuring Docker daemon..."
install -d -m755 /etc/docker
cat > /etc/docker/daemon.json <<DOCKEREOF
{
"storage-driver": "fuse-overlayfs"
}
DOCKEREOF
echo "[entrypoint] Starting Docker daemon..." echo "[entrypoint] Starting Docker daemon..."
dockerd > /dev/null 2>&1 & dockerd > /dev/null 2>&1 &