Как использовать файл .dockerignore?

Опубликовано: 2 Марта, 2022

Если вы разработчик 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 образец-изображение.

Создание образа Docker

Шаг 4: Запустите контейнер Docker и проверьте папку.

 sudo docker run -it образец-образ bash
ls

Запуск контейнера

Вы обнаружите, что Контейнер содержит только файл докеров, а не папку «ignore-this». Не то чтобы он также не содержал файла .dockerignore.

Что, если вы проигнорируете dockerfile?

Это правда, что вы также можете упомянуть файл dockerfile внутри файла .dockerignore и исключить его из контекста сборки Docker. На самом деле это обычная практика, чем вы могли подумать. Это позволяет вам не раскрывать всю схему вашего приложения Docker.