개발

Dockerfile 린터

즉각적인 피드백과 실행 가능한 제안을 통해 Dockerfile의 모범 사례, 보안 문제 및 최적화 기회를 분석하세요.

무료 사용 가입 불필요 브라우저에서 실행

도구 작업 영역

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.

Dockerfile 린터란?

Dockerfile Linter는 Dockerfile 명령어를 검사하고 잠재적인 문제를 표시하는 정적 분석 도구입니다. 일반적인 실수, 보안 취약성(예: 루트로 실행), 더 이상 사용되지 않는 구문, 비효율적인 계층화, 상태 확인 누락 및 고정되지 않은 기본 이미지 태그를 확인합니다. Hadolint와 같은 도구와 유사하게 더 작고 안전하며 유지 관리가 용이한 컨테이너 이미지를 구축하는 데 도움이 되는 구체적인 제안과 함께 심각도 등급 피드백을 제공합니다.

Dockerfile 린터 사용 방법

  1. 1Dockerfile 콘텐츠를 텍스트 영역에 붙여넣으세요.
  2. 2Linter는 모든 지침을 자동으로 분석하고 분류된 결과 목록을 표시합니다.
  3. 3각 결과에는 줄 번호, 심각도 수준(오류, 경고 또는 정보), 규칙 ID, 설명 및 수정 제안이 포함됩니다.
  4. 4상단에서 요약 수를 검토한 다음 오류를 먼저 해결하고 경고 및 정보 힌트를 표시합니다.

Common Dockerfile 린터 use cases

Developer debugging

Use Dockerfile 린터 to quickly inspect generated output, API payloads, configuration values, or encoded data while building and debugging software.

Review before reuse

Validate or transform dockerfile, docker, lint, linter, best practices, container before adding the result to a project, document, form, message, or shared file.

Privacy-first browser processing

Run common dockerfile, docker, lint, linter, best practices, container tasks locally in the browser without sending sensitive development data to a backend service.

자주 묻는 질문

Dockerfile 린터는 어떤 규칙을 확인하나요?

Linter는 오류(FROM 누락, 최신 태그, ADD 대 COPY, CMD 중복), 경고(apt-get 플래그, sudo 사용, 더 이상 사용되지 않는 MAINTAINER, HEALTHCHECK/USER 누락, 쉘 형식 CMD) 및 정보(RUN 레이어, .dockerignore, 절대 WORKDIR 경로 결합)의 세 가지 심각도 수준에 걸쳐 15개 이상의 규칙을 확인합니다.

이 린터는 Hadolint와 동일합니까?

이 도구는 설치가 필요 없는 브라우저 기반 인터페이스에서 가장 일반적이고 영향력 있는 Hadolint 규칙을 다룹니다. CI/CD의 포괄적인 Linting를 위해서는 이 도구와 함께 Hadolint를 사용하여 빠른 검사를 수행하는 것이 좋습니다.

기본 이미지 버전을 고정해야 하는 이유는 무엇입니까?

'latest' 또는 태그가 지정되지 않은 기본 이미지를 사용하면 업스트림 이미지가 업데이트될 때 빌드가 예기치 않게 중단될 수 있습니다. 특정 버전(예: node:20-alpine)을 고정하면 재현 가능하고 예측 가능한 빌드가 보장됩니다.

컨테이너에서 루트로 실행하는 것이 보안 위험이 있는 이유는 무엇입니까?

컨테이너 내부에서 루트로 실행하면 공격 표면이 늘어납니다. 공격자가 애플리케이션을 손상시키는 경우 컨테이너 내에서 루트 권한을 갖게 되므로 컨테이너 이스케이프가 더 위험해질 수 있습니다. USER 명령을 추가하면 이러한 위험이 완화됩니다.