Найти тему

Что такое Docker простыми словами? Пошаговое руководство по Docker

Оглавление

Docker — это инструмент, который позволяет упаковывать приложения и все их зависимости в так называемые контейнеры.

Контейнер — это небольшая виртуальная среда, где работает ваше приложение.

Представьте, что это как коробка, в которую вы положили всё необходимое для работы программы: код, библиотеки, настройки и т.д.

Это удобно, потому что приложение будет одинаково работать на любом компьютере или сервере, где есть Docker.

Вам не нужно беспокоиться о том, что у кого-то не установлена нужная версия программы или зависимостей.

Docker Compose — это инструмент, который помогает запускать сразу несколько контейнеров вместе и управлять ими. Например, ваше приложение может состоять из разных частей: база данных, сервер, кэш и т.д. Docker Compose позволяет описать в одном файле (обычно docker-compose.yml), как все эти контейнеры должны взаимодействовать между собой, какие порты открывать, какие данные передавать. После этого одной командой можно запустить все эти контейнеры.

Простыми словами:

  • Docker — это как упаковка для вашего приложения, чтобы оно работало везде одинаково.
  • Docker Compose — это способ запускать и настраивать сразу несколько таких упаковок вместе.

Чем отличается Docker от виртуальных машин читайте здесь.

Работа с Docker по шагам

Чтобы начать работать с Docker, рассмотрим пошаговый процесс создания и запуска контейнера с простым примером.

-2

Шаг 1: Установка Docker

Если Docker ещё не установлен, нужно установить его для вашей ОС (Linux, macOS или Windows). Инструкции доступны на официальном сайте Docker:

После установки Docker, проверьте, что всё настроено правильно, выполнив следующую команду:

docker --version

Если установка прошла успешно, вы увидите версию Docker.

Шаг 2: Создание приложения

Допустим, у нас есть простое Python-приложение. Создадим его в новом каталоге:

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

mkdir my-docker-app
cd my-docker-app

2. Внутри папки создайте файл app.py с простым кодом:

app.py:

print("Hello from Docker!")

Шаг 3: Создание Dockerfile

Dockerfile — это текстовый файл с инструкциями для сборки контейнера. Внутри my-docker-app создайте файл с именем Dockerfile.

Dockerfile:

# Используем официальный образ
Python FROM python:3.9-slim
# Устанавливаем рабочую директорию в контейнере
WORKDIR /app
# Копируем текущую директорию в контейнер
COPY . .
# Команда для запуска приложения
CMD ["python", "app.py"]

Шаг 4: Сборка Docker-образа

Теперь, когда у нас есть Dockerfile, мы можем собрать Docker-образ. В терминале выполните команду:

docker build -t my-python-app .

Здесь:

  • -t my-python-app — задаёт имя образа.
  • . — указывает, что Dockerfile находится в текущей директории.

Если всё сделано правильно, Docker соберёт образ на основе инструкций в Dockerfile.

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

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

docker run my-python-app

После этого Docker запустит контейнер, выполнит команду CMD из Dockerfile, и вы увидите вывод:

Hello from Docker!.

Остановимся на этом шаге поподробней. Нам могут понадобиться разные варианты запуска контейнера и приложения внутри него.

5.1 Запуск в интерактивном режиме

Иногда нужно запустить контейнер в интерактивном режиме, чтобы войти в него и вручную запустить приложение или выполнить другие команды. Для этого используйте параметр -it.

docker run -it my-python-app /bin/bash

После входа в контейнер можно запустить приложение вручную:

python app.py

5.2 Запуск с монтированием файловой системы (для разработки)

Если вы разрабатываете приложение и вам нужно, чтобы изменения в коде на локальной машине сразу отображались внутри контейнера, можно использовать опцию монтирования директории с локальной машины в контейнер.

Например, если вы хотите, чтобы ваш Python-код обновлялся без пересборки образа, используйте следующую команду:

docker run -v $(pwd):/app my-python-app

Здесь:

  • -v $(pwd):/app — монтирует текущую директорию ($(pwd) для Linux/macOS) на локальной машине в папку /app внутри контейнера.

При изменении кода на вашей локальной машине, контейнер сразу увидит эти изменения.

5.3 Запуск приложения с передачей параметров

Иногда вам может понадобиться передать параметры в приложение при запуске контейнера. Например, если ваше приложение принимает аргументы командной строки.

Допустим, наше Python-приложение принимает аргумент:

app.py:

import sys
if len(sys.argv) > 1:
print(f"Argument passed: {sys.argv[1]}")
else:
print("No arguments passed.")

Когда мы создаём Docker-образ, команда в Dockerfile остаётся той же:

CMD ["python", "app.py"]

Но для передачи аргументов при запуске контейнера используйте следующую команду:

docker run my-python-app аргумент_1

Результат будет таким:

Argument passed: аргумент_1

Запуск с использованием переменных окружения

Если ваше приложение использует переменные окружения, вы можете передавать их при запуске контейнера с помощью флага -e.

Пример Python-приложения, которое использует переменную окружения:

app.py:

import os
message = os.getenv('MESSAGE', 'No message provided')
print(f"Message: {message}")

Для передачи переменной окружения MESSAGE, запустите контейнер так:

docker run -e MESSAGE="Hello from environment variable!" my-python-app

Результат:

Message: Hello from environment variable!

Шаг 6: Просмотр запущенных контейнеров

Для просмотра всех запущенных контейнеров используйте команду:

docker ps

Для просмотра всех контейнеров, включая завершённые, выполните:

docker ps -a

Шаг 7: Остановка и удаление контейнеров

Чтобы остановить контейнер, выполните команду:

docker stop <container_id>

Для удаления контейнера:

docker rm <container_id>

Шаг 8: Удаление образов

Чтобы удалить созданный Docker-образ, используйте команду:

docker rmi my-python-app

Шаг 9: Использование Docker Hub

Docker Hub — это публичный репозиторий для хранения Docker-образов. Вы можете загрузить свои образы туда для дальнейшего использования или загрузить образы, созданные другими разработчиками.

Правда из России сейчас могут быть с этим проблемы.

Вход в Docker Hub:

docker login

Загрузка образа на Docker Hub:

Предположим, у вас есть учётная запись с именем пользователя myusername. Чтобы загрузить образ, сначала его нужно переназвать:

docker tag my-python-app myusername/my-python-app

Затем загрузите образ:

docker push myusername/my-python-app

Теперь образ доступен на Docker Hub, и его можно использовать из любой точки мира.

Загрузка образа с Docker Hub:

Чтобы загрузить образ, используйте команду:

docker pull myusername/my-python-app

Полезные команды Docker

1. Посмотреть логи контейнера:

docker logs <container_id>

2. Автоматическое удаление контейнера после завершения:

docker run --rm my-python-app

3. Остановка всех запущенных контейнеров:

docker stop $(docker ps -q)

4. Удаление всех контейнеров:

docker rm $(docker ps -a -q)

5. Удаление всех образов:

docker rmi $(docker images -q)

Заключение

Теперь у вас есть базовые знания о том, как работать с Docker. Вы можете создать Dockerfile для своего приложения, собрать образ и запустить контейнер. Docker значительно упрощает процесс развертывания приложений и их зависимостей, а также позволяет поддерживать консистентность окружений на различных этапах разработки и эксплуатации.

-3

Если Вам интересно, что еще можно найти на канале QA Helper, прочитайте статью: Вместо оглавления. Что вы найдете на канале QA Helper - справочник тестировщика?

Не забудьте подписаться на канал, чтобы не пропустить полезную информацию: QA Helper - справочник тестировщика

Пишите в комментариях какой пункт было бы интересно рассмотреть более подробно.

Обязательно прочитайте: Что должен знать и уметь тестировщик

Также будет интересно почитать: Вопросы которые задают на собеседовании тестировщикам