Практика 5. Операционные системы
L5: Основы Docker
Введение
Docker — это платформа для разработки, доставки и запуска приложений в контейнерах. Контейнеры позволяют изолировать приложение и его зависимости, что делает их переносимыми и предсказуемыми в работе на разных системах.
###Image (Образ)
Образ — это шаблон, который содержит всё необходимое для запуска приложения: код, библиотеки, зависимости, конфигурации и т.д. Образы создаются на основе Dockerfile — текстового файла с инструкциями для сборки.
Образы хранятся в репозиториях, таких как Docker Hub, и могут быть загружены с помощью команды docker pull.
Пример: docker pull nginx — загружает образ веб-сервера Nginx.
###Container (Контейнер): Контейнер — это запущенный экземпляр образа. Контейнер изолирует приложение от основной системы, но использует ядро операционной системы хоста. Контейнеры создаются с помощью команды docker run и могут быть остановлены (docker stop), удалены (docker rm) или перезапущены.
Пример: docker run -d nginx — запускает контейнер на основе образа Nginx в фоновом режиме.
Volume (Том):
Том — это механизм для сохранения данных, созданных и используемых контейнерами. Томы позволяют сохранять данные даже после удаления контейнера. Томы могут быть подключены к контейнерам для хранения файлов, баз данных, логов и других данных.
Пример: docker run -v /host/path:/container/path nginx — подключает директорию /host/path на хосте к /container/path в контейнере.
Исходные данные:
- Сервер:
62.113.44.178 - Имя пользователя:
user_name - Пароль:
87743321
Часть 1: Изучение основных команд Docker
Изучите команды ниже, используя параметр --help, чтобы лучше понять, как они работают. Для каждой команды попробуйте запустить docker <команда> --help и изучите документацию.
Основные команды:
docker pull— загрузка образа с Docker Hub.docker run— запуск контейнера.docker ps— список запущенных контейнеров.docker stop— остановка контейнера.docker rm— удаление контейнера.docker rmi— удаление образа.docker build— создание образа из Dockerfile.docker images— список загруженных образов.
Часть 2: Запуск контейнера с Nginx
Шаг 2.1: Загрузка образа Nginx
- Загрузите образ Nginx с Docker Hub:
Окно терминала docker pull nginx
Шаг 2.2: Запуск контейнера Nginx
- Используйте свой уникальный порт для проброса, чтобы избежать конфликта с другими участниками (например,
8081,8082и т. д.). - Запустите контейнер, пробросив выбранный порт на порт
80контейнера:Окно терминала docker run -d -p <ваш_уникальный_порт>:80 --name <фамилия>-nginx nginx
Шаг 2.3: Проверка работы контейнера
- Откройте браузер и перейдите по адресу:
http://62.113.44.178:<ваш_уникальный_порт>
- Вы должны увидеть приветственное сообщение Nginx.
Часть 3: Создание своего Docker-образа
Шаг 3.1: Подготовка Dockerfile
-
Создайте папку для вашего проекта:
Окно терминала mkdir my-docker-appcd my-docker-app -
Создайте файл
Dockerfileсо следующим содержимым:# Используем официальный образ PythonFROM python:3.8-slim# Устанавливаем необходимые зависимостиRUN pip install flask# Копируем приложение в контейнерCOPY app.py /app/app.py# Устанавливаем рабочую директориюWORKDIR /app# Открываем порт приложенияEXPOSE 5000# Указываем команду для запуска приложенияCMD ["python", "app.py"] -
Создайте файл
app.pyс кодом Flask-приложения:from flask import Flaskapp = Flask(__name__)@app.route('/')def hello():return "Hello from Docker, <ваше_имя>!"if __name__ == "__main__":app.run(host="0.0.0.0", port=5000)
Шаг 3.2: Сборка Docker-образа
- Соберите образ, используя команду:
Окно терминала docker build -t <фамилия>-flask-app .
Шаг 3.3: Запуск контейнера из созданного образа
-
Для контейнера Flask также выберите уникальный порт (например,
5001,5002и т. д.), чтобы избежать конфликтов:Окно терминала docker run -d -p <ваш_уникальный_порт>:5000 <фамилия>-flask-app -
Проверьте работу контейнера, открыв браузер и перейдя по адресу:
http://62.113.44.178:<ваш_уникальный_порт> -
Вы должны увидеть сообщение “Hello from Docker, <ваше_имя>!”.