Объясните базовые команды Docker (build, run, push).java-57

Docker предоставляет множество команд для управления контейнерами, образами и другими ресурсами. Три основные команды, которые используются чаще всего, это docker build, docker run и docker push. Давайте разберем каждую из них подробно.


1. docker build

Команда docker build используется для создания Docker-образа на основе Dockerfile. Dockerfile — это текстовый файл, в котором описаны шаги для создания образа, такие как установка зависимостей, копирование файлов и настройка среды.

Синтаксис

docker build [OPTIONS] PATH
  • PATH — путь к директории, где находится Dockerfile.
  • OPTIONS — дополнительные параметры, например:
    • -t — задает имя и тег для образа.
    • --no-cache — отключает использование кэша при сборке.

Пример

docker build -t myapp:1.0 .
  • -t myapp:1.0 — задает имя образа myapp и тег 1.0.
  • . — указывает, что Dockerfile находится в текущей директории.

Как это работает?

  1. Docker читает Dockerfile из указанной директории.
  2. Выполняет инструкции из Dockerfile пошагово.
  3. Создает промежуточные слои (layers) для каждой инструкции.
  4. Формирует финальный образ с указанным именем и тегом.

2. docker run

Команда docker run используется для запуска контейнера из Docker-образа. Контейнер — это экземпляр образа, который выполняется как изолированный процесс на хостовой системе.

Синтаксис

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
  • IMAGE — имя образа, из которого будет запущен контейнер.
  • OPTIONS — дополнительные параметры, например:
    • -d — запуск контейнера в фоновом режиме (detached mode).
    • -p — проброс портов (например, -p 8080:80).
    • --name — задает имя контейнера.
    • -v — монтирование томов (volumes).
    • -e — передача переменных окружения.

Пример

docker run -d -p 8080:80 --name mycontainer myapp:1.0
  • -d — запуск контейнера в фоновом режиме.
  • -p 8080:80 — проброс порта 8080 хостовой системы на порт 80 контейнера.
  • --name mycontainer — задает имя контейнера mycontainer.
  • myapp:1.0 — имя и тег образа, из которого запускается контейнер.

Как это работает?

  1. Docker находит указанный образ (myapp:1.0).
  2. Создает контейнер на основе этого образа.
  3. Запускает контейнер с указанными параметрами (например, проброс портов).

3. docker push

Команда docker push используется для загрузки Docker-образа в удаленный реестр (например, Docker Hub). Это позволяет делиться образами с другими разработчиками или использовать их в других системах.

Синтаксис

docker push [OPTIONS] NAME[:TAG]
  • NAME — имя образа, которое включает имя реестра (например, username/repository).
  • TAG — тег образа (по умолчанию latest).

Пример

docker push myusername/myapp:1.0
  • myusername/myapp:1.0 — имя образа, где:
    • myusername — имя пользователя в Docker Hub.
    • myapp — имя репозитория.
    • 1.0 — тег образа.

Как это работает?

  1. Docker проверяет, авторизован ли пользователь в реестре (например, Docker Hub).
  2. Загружает образ в указанный репозиторий.
  3. После загрузки образ становится доступен для использования другими пользователями.

Пример полного рабочего процесса

  1. Создание образа:

    docker build -t myusername/myapp:1.0 .
    
  2. Запуск контейнера:

    docker run -d -p 8080:80 --name mycontainer myusername/myapp:1.0
    
  3. Загрузка образа в Docker Hub:

    docker push myusername/myapp:1.0
    

Преимущества использования этих команд

  1. Упрощение разработки — Docker позволяет легко создавать, тестировать и развертывать приложения.
  2. Портативность — образы можно использовать на любой системе с Docker.
  3. Совместная работа — загрузка образов в реестр позволяет делиться ими с командой.

Резюмируем

  • docker build — используется для создания Docker-образа на основе Dockerfile.
  • docker run — запускает контейнер из образа с указанными параметрами.
  • docker push — загружает образ в удаленный реестр (например, Docker Hub).

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