Desarrollo

Linter de Dockerfile

Analiza su Dockerfile en busca de buenas prácticas, problemas de seguridad y oportunidades de optimización, con feedback instantáneo y sugerencias prácticas.

Gratis Sin registro Se ejecuta en tu navegador

Espacio de trabajo de la herramienta

2 errors 10 warnings 3 info
Line 1DL3007ERROR

Using `latest` tag in FROM (image: ubuntu:latest)

Pin a specific version tag, e.g. ubuntu:22.04 instead of ubuntu:latest.

Line 8DL3020ERROR

ADD used where COPY would suffice

Use COPY instead of ADD for copying local files. ADD has extra features (auto-extract, remote URLs) that can be surprising.

Line 2DL4000WARNING

MAINTAINER is deprecated

Use LABEL maintainer="name@example.com" instead.

Line 5DL3015WARNING

Using `apt-get install` without `--no-install-recommends`

Add --no-install-recommends to avoid installing unnecessary packages and reduce image size.

Line 6DL3014WARNING

Using `apt-get install` without `-y` flag

Add -y flag to avoid interactive prompts: apt-get install -y.

Line 6DL3015WARNING

Using `apt-get install` without `--no-install-recommends`

Add --no-install-recommends to avoid installing unnecessary packages and reduce image size.

Line 6DL3009WARNING

Missing `apt-get clean` or `rm -rf /var/lib/apt/lists/*` after install

Clean up apt cache in the same RUN layer to reduce image size.

Line 11DL3004WARNING

Using `sudo` in Dockerfile

Avoid sudo. Use USER to switch users, or run commands as root directly (default in Docker).

Line 13DL3011WARNING

EXPOSE with no port number

Specify a valid port number, e.g. EXPOSE 8080.

Line 15DL3006WARNING

Missing HEALTHCHECK instruction

Add a HEALTHCHECK to let Docker know how to check that the container is still working.

Line 15DL3002WARNING

Running as root — no USER instruction found

Add a USER instruction to run the container as a non-root user for better security.

Line 15DL3025WARNING

CMD uses shell form instead of exec form

Use exec form: CMD ["executable", "arg1", "arg2"] for proper signal handling.

Line 1DL3005INFO

Consider using a .dockerignore file

A .dockerignore file helps exclude unnecessary files from the build context, speeding up builds and reducing image size.

Line 4DL3003INFO

4 consecutive RUN instructions found

Combine RUN instructions using && to reduce image layers.

Line 9DL3000INFO

WORKDIR should use an absolute path

Use an absolute path, e.g. WORKDIR /app instead of WORKDIR app.

¿Qué es un linter de Dockerfile?

Un linter de Dockerfile es una herramienta de análisis estático que examina las instrucciones de su Dockerfile y señala posibles problemas. Verifica errores comunes, vulnerabilidades de seguridad, como ejecución como root, sintaxis obsoleta, capas ineficientes, ausencia de health checks y etiquetas de imágenes base sin versión fijada. Así como herramientas como Hadolint, proporciona feedback clasificado por severidad y sugerencias objetivas para ayudar a crear imágenes de contêiner menores, más seguras y fáciles de mantener.

Cómo usar Linter de Dockerfile

  1. 1Cole el contenido de Dockerfile en la vista de texto.
  2. 2El linter analiza automáticamente cada instrucción y muestra una lista categorizada de resultados.
  3. 3Cada resultado incluye el número de línea, el nivel de severidad (error, aviso o información), el ID de la regla, una descripción y una sugerencia de corrección.
  4. 4Consulte los totales en la parte superior y corrija primero los errores, después las advertencias y, finalmente, las recomendaciones informativas.

Casos de uso comunes

Auditoría antes de la push

Audite Dockerfiles antes de enviarlos a un registro de contenedores para identificar problemas con antelación.

Buenas prácticas de CI/CD

Aplique buenas prácticas de Dockerfile en pipelines de CI/CD para mantener la calidad de las imágenes consistente.

Aprendizado de Docker

Aprende buenas prácticas de Docker con comentarios en tiempo real y sugerencias prácticas aplicadas a sus propios Dockerfiles.

Revisión de código

Revise Dockerfiles durante code reviews para identificar problemas de seguridad, oportunidades de optimización y sintaxis obsoletas.

Preguntas frecuentes

¿Qué reglas verifica el linter de Dockerfile?

El linter verifica más de 15 reglas en tres niveles de severidad: errores (ausencia de FROM, tag latest, ADD en vez de COPY y CMD duplicado), avisos (flags de apt-get, uso de sudo, MAINTAINER obsoleto, ausencia de HEALTHCHECK o USER y CMD en shell form) e informaciones (combinación de capas RUN,.dockerignore y caminos absolutos en WORKDIR).

¿Este linter equivale a Hadolint?

La herramienta cubre las reglas más comunes y relevantes de Hadolint en una interfaz ejecutada en el navegador, sin exigir instalación. Para un análisis integral en CI/CD, considere usar Hadolint junto con esta herramienta para verificaciones rápidas.

¿Por qué debo fijar la versión de la imagen base?

Usar latest o una imagen base sin etiqueta puede hacer que los builds falhem inesperadamente cuando se actualiza la imagen upstream. Fijar una versión específica, como node:20-alpine, garantiza builds reproducibles y predecibles.

¿Por qué ejecutar como root en un contenedor representa un riesgo de seguridad?

Ejecutar como root dentro de un contenedor aumenta la superficie de ataque. Si alguien compromete la aplicación, tendrá privilegios de root en el contêiner, lo que puede hacer escapes de contêiner más peligrosos. Añadir una instrucción USER reduce ese riesgo.

¿El contenido de mi Dockerfile se envía a algún servidor?

No. El análisis se ejecuta localmente en el navegador, y el contenido de Dockerfile no se envía a servidores.