Команда Docker build
docker buildКоманда используется для сборки Docker-образа из Dockerfile.
docker buildКоманда считывает инструкции, определённые в Dockerfile, собирает образ шаг за шагом и сохраняет итоговый результат в локальный репозиторий образов.
Синтаксис
docker build [OPTIONS] PATH | URL | -
PATH: путь к каталогу, содержащему Dockerfile, или.(Текущий каталог).URL: Указывает на адрес удалённого репозитория (например, репозитория Git), содержащего Dockerfile.-: Считывает Dockerfile из стандартного ввода.
Общие параметры:
-t, --tag: Задаёт имя и тег для собранного образа.-f, --file: Задаёт путь к Dockerfile (по умолчаниюPATHподDockerfile)。--build-arg: Задать аргументы сборки.--no-cache: Собрать образ без использования слоя кэша.--rm: Удалять промежуточные контейнеры после успешной сборки (включено по умолчанию).--force-rm: Всегда удалять промежуточные контейнеры, независимо от того, завершится сборка успешно или неудачно.--pull: Всегда пытаться загрузить последний базовый образ из реестра.
Пояснение к дополнительным параметрам:
--build-arg=[]: Задать переменные при сборке образа.--cpu-shares: Задать вес использования CPU.--cpu-period: Ограничить период CFS для CPU.--cpu-quota: Ограничить квоту CFS для CPU.--cpuset-cpus: Указать доступные идентификаторы CPU.--cpuset-mems: Укажите доступные идентификаторы узлов памяти.--disable-content-trust: Игнорировать проверку доверия к содержимому (включена по умолчанию).-f: Укажите путь к Dockerfile.--force-rm: Принудительно удалять промежуточные контейнеры во время процесса сборки.--isolation: Использовать указанную технологию изоляции контейнеров.--label=[]: Задать метаданные для образа.-m: Задать максимальное значение памяти.--memory-swap: Задать максимальное значение пространства подкачки (память + пространство подкачки),-1означает отсутствие ограничений на пространство подкачки.--no-cache: Не использовать кеш при сборке образа.--pull: Попытаться загрузить последнюю версию базового образа.--quiet, -q: Тихий режим; выводить только ID образа после успешной сборки.--rm: Удалять промежуточные контейнеры после успешной сборки (включено по умолчанию).--shm-size: Задать/dev/shmразмер, со значением по умолчанию 64M.--ulimit: Задать конфигурацию Ulimit.--squash: Сжать все шаги в Dockerfile в один слой.--tag, -t: Указать имя и тег для образа в форматеname:tagилиname; для одного образа можно задать несколько тегов в рамках одной сборки.--network: Задать во время сборкиRUNсетевой режим инструкции, значение по умолчанию —default。
1. Собрать образ
docker build -t myimage:latest .
Эта команда читает Dockerfile из текущего каталога и собирает образ с именем myimage:latest.
2. Указать путь к Dockerfile
docker build -f /path/to/Dockerfile -t myimage:latest .
Эта команда читает Dockerfile из каталога /path/to/ и собирает образ с именем myimage:latest.
3. Задайте аргументы сборки
docker build --build-arg HTTP_PROXY=http://proxy.example.com -t myimage:latest .
Это позволит использовать переменную окружения HTTP_PROXY во время процесса сборки.
4. Соберите образ без использования слоя кэша
docker build --no-cache -t myimage:latest .
Это проигнорирует все кэшированные слои при сборке образа, гарантируя, что каждый шаг будет выполнен заново.
Пример — сборка образа с помощью Dockerfile
1. Создайте Dockerfile со следующим содержимым:
# Dockerfile 示例 FROM ubuntu:20.04 LABEL maintainer="[email protected]" RUN apt-get update && apt-get install -y nginx COPY index.html /var/www/html/index.html CMD ["nginx", "-g", "daemon off;"]
2. Соберите образ
docker build -t mynginx:latest .
Пример вывода:
Sending build context to Docker daemon 3.072kB Step 1/5 : FROM ubuntu:20.04 20.04: Pulling from library/ubuntu ... Step 2/5 : LABEL maintainer="[email protected]" ... Step 3/5 : RUN apt-get update && apt-get install -y nginx ... Step 4/5 : COPY index.html /var/www/html/index.html ... Step 5/5 : CMD ["nginx", "-g", "daemon off;"] ... Successfully built 123456789abc Successfully tagged mynginx:latest
3. Проверьте образ
docker images
Пример вывода:
Примечания
REPOSITORY TAG IMAGE ID CREATED SIZE mynginx latest 123456789abc 10 minutes ago 200MB
- Убедитесь, что синтаксис Dockerfile корректен, и выполняйте каждый шаг по порядку.
- Использование
.dockerignoreФайл исключает ненужные файлы и каталоги, чтобы уменьшить размер контекста сборки. - В производственных средах старайтесь использовать минимальные базовые образы, чтобы уменьшить размер образа и повысить безопасность.
- Избегайте раскрытия конфиденциальной информации (например, паролей, ключей) в Dockerfile.
docker buildКоманда — это основной инструмент для сборки образов Docker. Определив понятный Dockerfile, можно автоматически собрать среду выполнения и зависимости приложения. При её использовании обязательно правильно задавайте параметры и оптимизируйте Dockerfile, чтобы повысить эффективность сборки и качество образа.
Другие расширения