Как использовать файл .dockerignore?
Если вы разработчик Docker, вы могли заметить, что когда вы создаете образ Docker либо с помощью файла докера, либо напрямую извлекаете образ из реестра Docker, размер образа может быть значительно большим в зависимости от контекста сборки Docker.
Поскольку Docker является приложением клиент-сервер, мы знаем, что клиент Docker - это фактический интерфейс командной строки, который мы использовали для доступа к контейнерам Docker, а сервер Docker на самом деле называется Docker Daemon, который помогает вам в обслуживании контейнеров. Когда мы пытаемся создать образ Docker, нам нужно отправить некоторые файлы в Docker Daemon или на сервер, чтобы эти файлы можно было использовать и включить в контейнер Docker, который мы пытаемся создать. Этот набор файлов и каталогов называется контекстом сборки Docker.
Очевидно, что чем больше размер файлов и папок внутри контекста сборки Docker, тем больше размер образа Docker. Теперь внутри папки, в которой вы храните свой файл докеров и через которую вы пытаетесь создать образ, могут содержаться некоторые файлы и папки, которые хотя и являются частью проекта, и вы не хотите включать эти файлы в сборку Docker. Контекст. Давайте рассмотрим некоторые причины, по которым эти файлы и каталоги не включаются.
- Проблемы безопасности. Некоторые важные файлы, такие как пароли, секретные ключи, папки .git и т. Д., Содержат много информации о вашем проекте, и теперь вы можете захотеть раскрыть эти данные внешнему миру, чтобы предотвратить вторжение.
- Недействительность кеша - при написании файла Docker обычно используется инструкция COPY для копирования файлов и папок внутри контекста сборки Docker. Каждый оператор внутри Dockerfile приводит к созданию нового промежуточного слоя изображения. Следовательно, когда вы снова и снова вносите изменения в свой файл докеров , это может привести к множественной недействительности кеша и потере ресурсов.
- Кроме того, исключение ненужных больших файлов из контекста сборки Docker приведет к уменьшению размера образа Docker.
- Это ускоряет процесс создания образа Docker.
По всем этим причинам вы можете захотеть исключить некоторые файлы и папки из контекста сборки Docker.
Теперь, подобно файлу .gitignore, который обычно используется при создании репозиториев Git, файл .dockerignore используется для игнорирования файлов и папок при попытке создать образ Docker. Вы можете указать список файлов и каталогов внутри файла .dockerignore.
Давайте посмотрим на пример файла .dockerignore .
passphrase.txt журналы / .git * .md .cache
Давайте посмотрим на практический пример использования файла .dockerignore.
Шаг 1. Создайте каталог, содержащий файл докеров, в котором вы указываете инструкции и папку, которую вы хотите игнорировать (скажем, ignore-this).
В этом случае файл dockerfile просто извлекает образ Ubuntu из репозитория и копирует контекст сборки.
ОТ ubuntu: последний КОПИРОВАТЬ. .
Шаг 2. В том же каталоге создайте файл .dockerignore и укажите имя папки, которую вы хотите исключить из контекста сборки Docker.
игнорировать это
Теперь основной каталог содержит файл докеров с расширением. dockerignore и папку с именем ignore-this.
Шаг 3. Создайте образ Docker.
sudo docker build -t образец-изображение.
Шаг 4: Запустите контейнер Docker и проверьте папку.
sudo docker run -it образец-образ bash ls
Вы обнаружите, что Контейнер содержит только файл докеров, а не папку «ignore-this». Не то чтобы он также не содержал файла .dockerignore.
Что, если вы проигнорируете dockerfile?
Это правда, что вы также можете упомянуть файл dockerfile внутри файла .dockerignore и исключить его из контекста сборки Docker. На самом деле это обычная практика, чем вы могли подумать. Это позволяет вам не раскрывать всю схему вашего приложения Docker.