DevGang
Авторизоваться

Hadolint — линтер Dockerfile

Haskell Dockerfile Linter (hadolint) — это популярный инструмент статического анализа (линтер) ваших файлов Dockerfile. Он доступен для Mac, Windows и Linux.

Причин использовать инструмент linter для ваших файлов Dockerfile много:

  • Используйте лучшие практики для образов Docker
  • Ускорьте цикл обратной связи при написании Dockerfiles, поскольку линтер может найти синтаксические ошибки и уязвимости в системе безопасности еще до создания вашего образа.
  • Он может проверять нарушения стиля
  • Может улучшить читаемость и ремонтопригодность файлов Dockerfile.
  • Используйте их в своих пайплайнах CI/CD
  • Более глубокие знания о том, как лучше писать Dockerfiles

Сначала нам нужно установить его на нашу машину с Ubuntu (доступно больше альтернатив, если вы используете другую платформу).

# Download hadolint
wget https://github.com/hadolint/hadolint/releases/download/v2.12.0/hadolint-Linux-x86_64
# Download SHA256 checksum
wget https://github.com/hadolint/hadolint/releases/download/v2.12.0/hadolint-Linux-x86_64.sha256
# Validate the checksum
sha256sum -c hadolint-Linux-x86_64.sha256 
# Make the file executable
chmod +x ./hadolint-Linux-x86_64
# Rename the file
mv hadolint-Linux-x86_64 hadolint

Давайте создадим Dockerfile для тестирования инструмента, добавим в Dockerfile следующее содержимое.

FROM debian
RUN export node_version="0.10" \
&& apt-get update && apt-get -y install nodejs="$node_verion"
COPY package.json usr/src/app
RUN cd /usr/src/app \
&& npm install node-static

EXPOSE 80000
CMD ["npm", "start"]

Теперь проверьте Dockerfile с помощью этой команды.

./hadolint Dockerfile 

В результате у вас должно получиться что-то вроде этого.

Каждая строка имеет следующую структуру: <Filename>:<Line number> <Rule identifier> <Severity>: <Description>

Таким образом, первая строка, Dockerfile:1 DL3006 warning:Always tag the version of an image explicitly, это можно интерпретировать следующим образом:

  • Первая строка Dockerfile, Dockerfile:1
  • Cработало правило DL3006
  • И строгость правила warning
  • И имеет описание Always tag the version of an image explicitly

Чтобы получить более глубокие знания, вы можете иногда использовать идентификатор правила DL3006, чтобы найти его в разделе правил, там перечислены не все, однако это отличный источник, чтобы узнать больше о данной проблеме.

Конечно, также можно настроить инструмент для разных проектов, создав файл конфигурации hadolint.yml. С помощью этого файла вы можете, например, игнорировать правила, определять доверенные репозитории и многое другое.

Здесь также есть онлайн-версия инструмента hadolint, если вы не хотите пробовать его на своем компьютере.

Чтобы настроить инструмент с помощью GitHub Actions, вы можете использовать действие hadolint.

name: Lint Dockerfile

on: push

jobs:
  linter:
    runs-on: ubuntu-latest
    steps:

      - uses: actions/checkout@v2

      - name: Lint Dockerfile
        uses: hadolint/hadolint-action@master
        with:
          dockerfile: "Dockerfile"

Как видите, с этим инструментом легко начать работу, и он повысит качество ваших файлов Docker за считанные секунды. Hadolint — не единственный линтер для Dockerfiles. Docker Engine также включает в себя один, но больше для проверки основных ошибок. Кроме того, есть инструмент проверки от Snyk, который, вероятно, больше ориентирован на проблемы безопасности.

Источник:

#Docker
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу