FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]
```
Этот Dockerfile создает образ контейнера на основе образа `python:3.9-slim`, копирует файл `requirements.txt` в директорию `/app`, устанавливает зависимости с помощью `pip`, копирует код приложения в директорию `/app` и указывает команду для запуска приложения.
**Управление контейнерами**
После создания образа контейнера мы можем создать контейнер с помощью команды `docker run`. Эта команда запускает контейнер из образа контейнера и позволяет нам указать различные параметры, такие как имя контейнера, порты и переменные окружения.
Например, рассмотрим следующую команду:
```bash
docker run -d –name my-app -p 8080:8080 my-app-image
```
Эта команда создает контейнер с именем `my-app` из образа контейнера `my-app-image`, открывает порт 8080 и запускает контейнер в фоновом режиме.
Docker также предоставляет команду `docker ps`, которая позволяет нам просмотреть список запущенных контейнеров, и команду `docker stop`, которая позволяет нам остановить контейнер.
**Оркестровка контейнеров**
Оркестровка контейнеров – это процесс управления контейнерами в кластере. Kubernetes – это одна из наиболее популярных систем оркестровки контейнеров. Kubernetes позволяет нам создать кластер контейнеров, управлять ими и масштабировать их.
Kubernetes предоставляет концепцию подов (pod), которая представляет собой логическую группу контейнеров, работающих вместе. Поды могут содержать один или несколько контейнеров и могут быть управляемы с помощью команды `kubectl`.
Например, рассмотрим следующий файл конфигурации пода:
```yml
apiVersion: v1
kind: Pod
metadata:
name: my-app
spec:
containers:
– name: my-app
image: my-app-image
ports:
– containerPort: 8080
```
Этот файл конфигурации создает под с именем `my-app`, содержащий контейнер с именем `my-app` и образом контейнера `my-app-image`. Под также открывает порт 8080.
**Вывод**
В этой главе мы рассмотрели процесс создания и управления контейнерами с помощью Docker и Kubernetes. Мы узнали, как создать образ контейнера, создать контейнер и управлять им с помощью Docker, а также как оркестровать контейнеры с помощью Kubernetes. В следующей главе мы рассмотрим более подробно концепцию сервисов в Kubernetes и то, как они могут быть использованы для обеспечения доступа к контейнерам.