Введение
Docker стал незаменимым инструментом для разработчиков, позволяющим легко создавать и управлять контейнерными приложениями. Этот учебник проведет вас через процесс настройки среды разработки Docker на macOS или Windows, обеспечив вас необходимыми инструментами и знаниями для начала разработки и развертывания приложений на базе Docker.
Основы Docker
Что такое Docker?
Docker — это платформа с открытым исходным кодом, которая позволяет разработчикам создавать, развертывать и запускать приложения в согласованной и изолированной среде, называемой контейнерами. Контейнеры упаковывают приложение и все его зависимости, гарантируя, что приложение будет работать надёжно и последовательно независимо от базовой инфраструктуры.
Контейнеры Docker
Контейнер Docker — это лёгкий, автономный и исполняемый пакет, включающий всё необходимое для запуска приложения: код, среду выполнения, системные инструменты и библиотеки. Контейнеры изолированы друг от друга и от операционной системы хоста, обеспечивая согласованную и надёжную среду для работы приложения.
graph LR
A[Приложение] --> B[Зависимости]
B --> C[Среда выполнения]
C --> D[ОС]
D --> E[Контейнер Docker]
E --> F[Хост Docker]
Образы Docker
Образы Docker — это строительные блоки контейнеров. Образ — это только для чтения шаблон, содержащий инструкции для создания контейнера Docker. Образы создаются с помощью Dockerfile, который представляет собой текстовый файл, содержащий все команды, необходимые для построения образа.
Реестр Docker
Реестр Docker — это система хранения и распространения образов Docker. Наиболее популярным общедоступным реестром является Docker Hub, который предоставляет обширную коллекцию предварительно созданных образов для различных приложений и служб.
Архитектура Docker
Docker использует архитектуру клиент-сервер, где клиент Docker взаимодействует с демоном Docker, который отвечает за создание, запуск и управление контейнерами Docker.
| Компонент | Описание |
|---|---|
| Клиент Docker | Пользовательский интерфейс системы Docker. Он позволяет пользователям взаимодействовать с демоном Docker. |
| Демон Docker | Фоновый процесс, который управляет контейнерами и образами Docker. |
| Реестр Docker | Репозиторий для хранения и распространения образов Docker. |
| Сетевая инфраструктура Docker | Позволяет контейнерам взаимодействовать друг с другом и с внешним миром. |
| Тома Docker | Предоставляет способ сохранения данных, генерируемых и используемых контейнерами Docker. |
Установка Docker на macOS или Windows
Установка Docker на macOS
- Перейдите на сайт Docker и загрузите Docker Desktop для Mac.
- Запустите установщик и следуйте инструкциям на экране для завершения установки.
- После установки значок Docker появится в строке меню, указывая на то, что Docker запущен.
Установка Docker на Windows
- Перейдите на сайт Docker и загрузите Docker Desktop для Windows.
- Запустите установщик и следуйте инструкциям на экране для завершения установки.
- После установки значок Docker появится в области уведомлений, указывая на то, что Docker запущен.
Проверка установки
После установки Docker вы можете проверить её, открыв терминал (macOS) или PowerShell (Windows) и выполнив следующую команду:
docker version
Это отобразит версию клиента Docker и сервера Docker (демона), установленного на вашей системе.
Установка Docker Compose
Docker Compose — это инструмент для определения и запуска многоконтейнерных приложений Docker. Чтобы установить Docker Compose:
- Перейдите на репозиторий Docker Compose на GitHub и загрузите последнюю версию Docker Compose для вашей операционной системы.
- Сделайте загруженный файл исполняемым, выполнив следующую команду (для Linux/macOS):
chmod +x docker-compose - Переместите двоичный файл Docker Compose в каталог в пути вашей системы, например,
/usr/local/bin/или~/bin/.
Теперь вы можете проверить установку, выполнив:
docker-compose version
Это отобразит версию Docker Compose, установленную на вашей системе.
Создание Docker-среды разработки
Создание Dockerfile
Dockerfile — это текстовый файл, содержащий все команды для создания Docker-образа. Вот пример Dockerfile для простого веб-приложения на Python:
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "app.py"]
Этот Dockerfile:
- Начинается с базового образа
python:3.9-slim. - Устанавливает рабочую директорию в
/app. - Копирует файл
requirements.txtв рабочую директорию. - Устанавливает зависимости Python, перечисленные в
requirements.txt. - Копирует код приложения в рабочую директорию.
- Указывает команду для запуска приложения (
python app.py).
Создание Docker-образа
Чтобы создать Docker-образ из Dockerfile, выполните следующую команду в той же директории, что и Dockerfile:
docker build -t my-python-app .
Это создаст Docker-образ с тэгом my-python-app.
Запуск Docker-контейнера
Чтобы запустить Docker-контейнер из образа my-python-app, используйте следующую команду:
docker run -p 8080:8080 my-python-app
Это запустит новый контейнер и отобразит порт 8080 на хосте на порт 8080 в контейнере.
Разработка с Docker Compose
Docker Compose — это инструмент для определения и запуска многоконтейнерных приложений Docker. Вот пример файла docker-compose.yml для простого веб-приложения с базой данных:
version: "3"
services:
web:
build: .
ports:
- 8080:8080
depends_on:
- db
db:
image: postgres:13
environment:
POSTGRES_DB: myapp
POSTGRES_USER: myapp
POSTGRES_PASSWORD: secret
volumes:
- db-data:/var/lib/postgresql/data
volumes:
db-data:
Этот файл docker-compose.yml определяет две службы: web и db. Служба web создаёт Docker-образ из текущей директории и отображает порт 8080 на хосте на порт 8080 в контейнере. Служба db использует официальный образ PostgreSQL и настраивает базу данных для приложения.
Чтобы запустить приложение, выполните:
docker-compose up -d
Это запустит контейнеры web и db в фоновом режиме.
Резюме
Следуя этому руководству, вы научитесь устанавливать Docker на вашем компьютере macOS или Windows, освоите основы Docker и создадите среду разработки Docker, адаптированную к вашим потребностям. Эти навыки позволят вам оптимизировать рабочий процесс разработки и воспользоваться преимуществами Docker, такими как стабильные и воспроизводимые среды, простота развертывания и улучшенная масштабируемость.



