Если в Dockerfile написан с ошибками, например:Есть ли способ вставить Dockerfile?
CMD ["service", "--config", "/etc/service.conf]
(отсутствует котировка)
Есть ли способ, чтобы нибудь вкусненького его обнаружить такую ошибку, прежде чем строить?
Если в Dockerfile написан с ошибками, например:Есть ли способ вставить Dockerfile?
CMD ["service", "--config", "/etc/service.conf]
(отсутствует котировка)
Есть ли способ, чтобы нибудь вкусненького его обнаружить такую ошибку, прежде чем строить?
Если у вас есть подписка RedHat, вы можете получить доступ к приложению «Linter for Dockerfile» непосредственно по адресу https://access.redhat.com/labs/linterfordockerfile/; информация о заявке находится по адресу https://access.redhat.com/labsinfo/linterfordockerfile
Это приложение Node.js также доступно на GitHub https://github.com/redhataccess/dockerfile_lint, если вы предпочитаете запускать его локально.
Try:
hadolinter
анализирует файл Docker в AST и выполняет проверку и проверку на основе best practice Docker images rules. Он также использует Shellcheck, чтобы наполнить код Bash командами RUN
.Я выполнил простой тест на простой Docker файл с RUN
, ADD
, ENV
и CMD
. dockerlinter
был сообразительным в том, что группировал одно и то же нарушение правил вместе, но он не смог проверить настолько тщательно, как hadolinter
, возможно, из-за отсутствия Shellcheck
для статического анализа кода Bash.
Несмотря на то, что dockerlinter
отстает от объема, который он может использовать, он, кажется, намного проще для установки. npm install -g dockerlinter
, а для компиляции hadolinter
требуется компилятор Haskell и среда сборки, которая требуется для компиляции.
$ hadolint ./api/Dockerfile
L9 SC2046 Quote this to prevent word splitting.
L11 SC2046 Quote this to prevent word splitting.
L8 DL3020 Use COPY instead of ADD for files and folders
L10 DL3020 Use COPY instead of ADD for files and folders
L13 DL3020 Use COPY instead of ADD for files and folders
L18 DL3020 Use COPY instead of ADD for files and folders
L21 DL3020 Use COPY instead of ADD for files and folders
L6 DL3008 Pin versions in apt get install. Instead of `apt-get install <package>` use `apt-get install <package>=<version>`
L6 DL3009 Delete the apt-get lists after installing something
L6 DL3015 Avoid additional packages by specifying `--no-install-recommends`
$ dockerlint ./api/Dockerfile
WARN: ADD instruction used instead of COPY on line 8, 10, 13, 18, 21
ERROR: ./api/Dockerfile failed.
Существует также 'hadolinter' онлайн: http://hadolint.lukasmartinelli.ch/ –
@ LuísBianchin Да, он доступен тем же автором - до тех пор, как вы уверен, что вы вставляете свой Dockerfile третьим лицам. – Devy
Я использую очень успешно в своем трубопроводе CI npm's dockerfile_lint. Вы можете добавлять или расширять правила. Используя package.json
, вы можете создавать разные конфигурации для разных заданий. Есть и
Docker CLI
docker run -it --rm --privileged -v `pwd`:/root/ \
projectatomic/dockerfile-lint \
dockerfile_lint [-f Dockerfile]
docker run -it --rm --privileged -v `pwd`:/root/ \
-v /var/run/docker.sock:/var/run/docker.sock \
projectatomic/dockerfile-lint \
dockerfile_lint image <imageid>
и атомному CLI доступны
atomic run projectatomic/dockerfile-lint
atomic run projectatomic/dockerfile-lint image <imageid>
Также вы можете нибудь вкусненькое изображения для мечения.
https://github.com/redhataccess/dockerfile_lint –