Docker
Docker – это ПО с открытым исходным кодом, который упрощает создание контейнеров и приложений на основе контейнеров. Первоначально разработанный для Linux, Docker теперь работает также на Windows и MacOS. Чтобы понять, как работает Docker, нужно рассмотреть компоненты, которые используются для создания контейнеризованных приложений.
Dockerfile
Каждый контейнер Docker начинается с Dockerfile – это текстовый файл, который включает инструкции по созданию образа Docker. Dockerfile определяет операционную систему, которая будет лежать в основе контейнера, а также языки, переменные среды, расположение файлов, сетевые порты и другие необходимые компоненты и действия контейнера после его запуска.
Docker image
После конфигурации Dockerfile используется утилита docker build для создания образа на его основе. В то время как Dockerfile – это набор инструкций, которые сообщают программе о том, как создать образ, то Docker image – это переносимый файл, содержащий спецификации программных компонентов, выполняемых в контейнере. Поскольку Dockerfile обычно включает инструкции по загрузке некоторых программ из сетевых репозиториев, нужно явно указать актуальные версии, иначе Dockerfile может создавать несовместимые образы. Как только образ создан, изменить его нельзя (только добавить новый слой).
Docker run
Docker run – это команда, которая ищет образ и запускает контейнер на его основе. Каждый контейнер основан на образе. Контейнеры предназначены для временного использования, но их можно остановить и перезапустить, что приведет контейнер в то же состояние, в котором его остановили. Кроме того, несколько контейнеров одного и того же образа могут выполняться одновременно (при условии, что каждый контейнер имеет уникальное имя).
Docker Hub
Хотя создавать контейнеры легко, не обязательно делать каждый образ с нуля. Docker Hub – это хранилище SaaS для совместного использования и управления контейнерами, где можно найти официальные Docker images open-source проектов и вендоров, а также неофициальные образы. Можно загружать образы контейнеров с полезным кодом или загрузить в Hub свои собственные, сделав их публичными или частными. Также можно создать локальный реестр Docker.
Docker Engine
Docker Engine является ядром Docker, базовой клиент-серверной технологией, которая создает и запускает контейнеры. В целом, когда кто-то говорит «Docker» и не говорит о своем проекте, он имеет в виду Docker Engine. Есть две различные версии Docker Engine: Docker Engine Enterprise (проприетарная) и Docker Engine Community (общественная).