Перейти к содержимому

Практика 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

  1. Загрузите образ Nginx с Docker Hub:
    Окно терминала
    docker pull nginx

Шаг 2.2: Запуск контейнера Nginx

  1. Используйте свой уникальный порт для проброса, чтобы избежать конфликта с другими участниками (например, 8081, 8082 и т. д.).
  2. Запустите контейнер, пробросив выбранный порт на порт 80 контейнера:
    Окно терминала
    docker run -d -p <ваш_уникальный_порт>:80 --name <фамилия>-nginx nginx

Шаг 2.3: Проверка работы контейнера

  1. Откройте браузер и перейдите по адресу:
    http://62.113.44.178:<ваш_уникальный_порт>
  2. Вы должны увидеть приветственное сообщение Nginx.

Часть 3: Создание своего Docker-образа

Шаг 3.1: Подготовка Dockerfile

  1. Создайте папку для вашего проекта:

    Окно терминала
    mkdir my-docker-app
    cd my-docker-app
  2. Создайте файл Dockerfile со следующим содержимым:

    # Используем официальный образ Python
    FROM python:3.8-slim
    # Устанавливаем необходимые зависимости
    RUN pip install flask
    # Копируем приложение в контейнер
    COPY app.py /app/app.py
    # Устанавливаем рабочую директорию
    WORKDIR /app
    # Открываем порт приложения
    EXPOSE 5000
    # Указываем команду для запуска приложения
    CMD ["python", "app.py"]
  3. Создайте файл app.py с кодом Flask-приложения:

    from flask import Flask
    app = 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-образа

  1. Соберите образ, используя команду:
    Окно терминала
    docker build -t <фамилия>-flask-app .

Шаг 3.3: Запуск контейнера из созданного образа

  1. Для контейнера Flask также выберите уникальный порт (например, 5001, 5002 и т. д.), чтобы избежать конфликтов:

    Окно терминала
    docker run -d -p <ваш_уникальный_порт>:5000 <фамилия>-flask-app
  2. Проверьте работу контейнера, открыв браузер и перейдя по адресу:

    http://62.113.44.178:<ваш_уникальный_порт>
  3. Вы должны увидеть сообщение “Hello from Docker, <ваше_имя>!”.