Шпаргалка docker
Best Practice
🟢Следуй принципу минимальных привилегий, процессы в контейнере никогда не должны выполняться из под рута, кроме редких случаев, нужно добавлять команду user и менять юзера на non-root.
🟢Не привязываться к UID, он динамичен, можно записать во временную папку UID.
🟢Сделать все исполняемые файлы владельцем рута, чтобы никто не изменил исполняемые файлы, а пользователю достаточно только права на выполнение.
🟢Чем меньше компонентов и открытых портов, тем меньше поверхность для атак.
🟢Использовать multistage для промежуточного контейнера для компиляции всего, зависимостей, временных файлов, образ может весить на треть меньше.
🟢Distroless с чистого листа, использовать минимальный набор пакетов, например избавиться от образа Ubuntuи выбрать Debian-base, наши контейнеры содержат уязвимости изначального образа, чекать это.
🟢Нужно обновлять всё до того, как выйдет из под поддержки.
🟢Оставлять только те порты, которые реально нужны, избегать 22 и 21 3389 (ssh & ftp & rdp).
🟢Никогда не помещайте логины/пароли в команде, в докерфайлах, переменных, docker secret или любой другой менеджер секретов ok.
🟢Не использовать ADD, только COPY (когда используем точку - это воркдир где лежит докерфайл).
🟢При сборке используйте .dockerignore чтобы убрать сенситив дату, это как .gitignore.
🟢При сборке вначале команд лучше кешировать команду ран, а потом скопировать исходные данные.
🟢Метадату записать.
🟢Использовать тесты типа Linter и сканеры образов для CI.
🟢Время от времени делать prune, докер любит много места жрать
👉 @devops_star
Post #41
1.12K
- 👍 8
- 🔥 2