Главная страницаSelf-HostingDocker для новичков
Docker для новичков

Docker для новичков

Что такое Docker?

Docker позволяет «упаковать» приложение вместе со всеми его зависимостями в единый контейнер. Этот контейнер – это как небольшая, изолированная среда, которая гарантированно будет работать одинаково на любой машине, где установлен Docker.

Ключевых преимущества

  • Согласованность: Приложение будет работать одинаково в разработке, тестировании и продакшене.
  • Изоляция: Контейнеры изолированы друг от друга и от основной операционной системы, что повышает безопасность.
  • Портативность: Вы можете легко переносить приложение между разными средами (разные операционные системы, облачные платформы и т.д.).
  • Ускорение разработки: С Docker проще настроить и воспроизвести среду для разработки, что экономит время и силы.

Docker Compose

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

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

Установка

В репозиториях большинства дистрибутивов Linux нет Docker и Docker Compose или содержатся не актуальные версии. Проще всего установить их с помощью официального скрипта.

curl -sSL https://get.docker.com | sh
sudo usermod -aG docker ${USER}
sudo chmod 666 /var/run/docker.sock

Проверка версий

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

> docker -v
Docker version 28.0.4, build b8034c0
> docker compose version
Docker Compose version v2.34.0

Тестовый docker-compose.yml

Создайте новый файл

mkdir dashlit && cd dashlit && nano docker-compose.yml
services:
  app:
    container_name: dashlit-app
    image: ghcr.io/codewec/dashlit:latest
    restart: unless-stopped
    environment:
      ORIGIN: '${ORIGIN:-http://localhost:3000}'different
    ports:
      - '3000:3000'
    volumes:
      - ./data:/app/data

Сохраните, выйдите из редактора nano (ctrl + x) и запустите

docker compose up

Через несколько секунд попробуйте в браузере зайти по адресу: http://ip:3000, указав вместо ip ip адрес компьютера, на котором запускаете Docker. Для примера взято простое веб-приложение для организации дашборда DashLit.

Типичные примеры

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

Обновление образов и перезапуск контейнеров

docker compose pull && docker compose up -d --force-recreate

или

docker compose down && docker compose pull && docker compose up -d

Обновление одного сервиса

docker compose pull <service_name> && docker compose up -d --force-recreate <service_name>

Просмотр запущенных контейнеров и логов

docker compose ps
docker compose logs

Очистка кэша

docker system prune

Основные команды Docker

  • docker ps — Показывает список запущенных контейнеров.
  • docker ps -a – показывает все контейнеры, включая остановленные.
  • docker images — Показывает список доступных образов Docker.
    • docker image prune -a – удаляет все неиспользуемые образы.
  • docker run [OPTIONS] IMAGE [COMMAND] [ARG...] — Запускает новый контейнер из образа.
    • docker run -d -p 8080:80 nginx – запускает контейнер nginx в фоновом режиме и прослушивает порт 8080 на хосте.
    • docker run --name mycontainer -d -p 8080:80 nginx — запускает контейнер с именем «mycontainer» и прослушивает порт 8080.
  • docker stop [CONTAINER ID или NAME] — Останавливает запущенный контейнер.
    • docker stop mycontainer
  • docker start [CONTAINER ID или NAME] — Запускает остановленный контейнер.
    • docker start mycontainer
  • docker restart [CONTAINER ID или NAME] — Перезапускает запущенный контейнер.
  • docker rm [CONTAINER ID или NAME] — Удаляет остановленный контейнер.
    • docker rm mycontainer
  • docker exec -it [CONTAINER ID или NAME] bash — Запускает оболочку в запущенном контейнере. Позволяет выполнять команды внутри контейнера.
  • docker system prune — Удаляет все неиспользуемые образы и другие ресурсы. Очень полезно накапливается большой кэш старых версий образов.

Основные команды Docker Compose

  • docker compose pull — загружает (скачивает) образы, указанные в файле docker-compose.yml, из реестра (например, Docker Hub) на локальную машину, но не запускает контейнеры.
  • docker compose up -d — Создает и запускает контейнеры, определенные в файле docker-compose.yml в режиме detached (в фоновом режиме).
  • docker compose down — Останавливает и удаляет контейнеры, сети и тома, определенные в файле docker-compose.yml.
  • docker compose ps — Показывает список запущенных сервисов.
  • docker compose logs — Показывает логи сервиса.
  • docker compose stop — Останавливает запущенные сервисы.
  • docker compose start — Запускает сервисы, определенные в файле docker-compose.yml.
Был ли полезен материал?

Нам очень важно получать обратную связь. Пожалуйста, оцените материал. Так мы поймем в какую сторону его стоит изменить.

Оставить комментарий