Как и виртуальные машины, контейнеры создаются из образов. На сегодняшний день самая популярная и удобная платформа для создания и запуска образов — Docker.Docker работает так. Предположим, вы с коллегами разработали приложение. Вы упаковываете его со всеми зависимостями — библиотеками, интерпретаторами, файлами и пр. — в Docker-образ и отправляете в репозиторий (т. е. хранилище). Чтобы развернуть приложение, нужно скачать из репозитория образ и создать из него контейнер на рабочем сервере.Хранилища Docker-образов бывают публичные и приватные. Самое известное публичное хранилище — это Docker Hub. Однако если вы работаете с Yandex.Cloud, лучше использовать собственное хранилище облака Yandex Container Registry. О нём и его плюсах мы поговорим на следующем уроке.
Как создаются образы
Docker-образы создаются с помощью инструкций, таких как запуск команды, добавление файла или директории, создание переменной окружения. Инструкции хранятся в Dockerfile — это обычный текстовый файл, который можно редактировать в любом текстовом редакторе (что соответствует принципам Infrastructure as Code).Вот простой пример Dockerfile для образа, в котором есть только ОС Ubuntu и веб-сервер nginx:
Скопировать кодFROM ubuntu:latest
RUN apt-get update -y
RUN apt-get install -y nginx
ENTRYPOINT ["nginx", "-g", "daemon off;"]
Каждая инструкция создаёт новый слой образа, и эти слои накладываются друг на друга. В конце вы задаёте команду — исполняемый файл, который будет запущен при старте Docker-контейнера.В примере выше первая строка определяет исходный образ (публичный образ с последней версией Ubuntu), на основе которого мы строим свой.Вторая и третья строки устанавливают веб-сервер nginx.Последняя строка задаёт точку входа — запускает nginx.Процесс создания образа — это считывание и выполнение инструкций из Dockerfile. Чтобы создать образ из Dockerfile, используется команда build. Если файл со спецификацией называется стандартно (Dockerfile), не указывайте название. Если иначе — напишите название после ключа -f
. После ключа -t
указывается имя образа, который будет создан:
Скопировать кодdocker image build -f my-dockerfile -t my-image .
Точка в примере означает, что для сборки используется текущая директория.
Как создаются контейнеры из образов
Для работы с хранилищем используются традиционные команды push и pull. Так мы помещаем образ в хранилище:
Скопировать кодdocker push my-image
Чтобы создать контейнер, загрузите из хранилища образ и запустите его:
Скопировать кодdocker pull my-image
docker run my-image
При создании контейнера из образа можно использовать параметры (флаги). Например, чтобы ограничить ресурсы памяти и процессора, загрузить свежую версию образа, передать значения переменных. Смотрите доступные флаги с помощью традиционного ключа --help
.
Свежие комментарии