Установка Docker и запуск первого контейнера

Рейтинг: 77.2% · 13 голосов
Практический курс по Docker: образы, контейнеры, тома, сети, Compose и продакшен. Уроки по главам с обсуждением.
Ответить
Аватара пользователя
Marina_DevOps
Сообщения: 25
Зарегистрирован: 11 май 2026, 05:31

Установка Docker и запуск первого контейнера

Сообщение Marina_DevOps »

АкадемияDocker с нуляГлава 2 из 17
Оглавление курса (17)
  1. Что такое Docker и какие задачи он решает
  2. Установка Docker и запуск первого контейнера (вы здесь)
  3. Образы: слои, теги и реестр Docker Hub
  4. Пишем свой Dockerfile
  5. Тома и хранение данных: volumes и bind mounts
  6. Сети в Docker: связываем контейнеры между собой
  7. Переменные окружения и конфигурация контейнеров
  8. Docker Compose: поднимаем многоконтейнерное приложение
  9. Оптимизация образов: multi-stage сборка, размер и кэш слоёв
  10. Логи, отладка и мониторинг контейнеров
  11. Базовая безопасность контейнеров
  12. Подготовка к продакшену: что важно учесть
  13. Dockerfile глубже: ENTRYPOINT и CMD, HEALTHCHECK, .dockerignore, запуск не от root
  14. Реестры образов: приватные registry, push и pull, теги и digest, imagePullSecrets
  15. BuildKit и buildx: multi-arch сборки, секреты сборки, экспорт кэша
  16. Docker в CI/CD: автосборка, сканирование образов (Trivy, Docker Scout), публикация
  17. Итоговый проект и куда расти: от Dockerfile до прода, обзор оркестрации (Kubernetes, Podman, OCI)
В первой главе разобрались, зачем Docker вообще нужен. Теперь поставим его на свою машину и запустим первый контейнер. К концу главы у вас будет рабочее окружение и набор базовых команд, на которых держится весь остальной курс.

Установка на Linux:

Docker родом из Linux и работает там нативно, без виртуальных машин. На Ubuntu и Debian проще всего поставить через официальный скрипт:

Код: Выделить всё

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER
Скрипт подключит репозиторий Docker и поставит пакеты docker-ce, docker-ce-cli и containerd. Пакет docker.io из стандартного репозитория Ubuntu тоже рабочий, но обычно отстает на несколько версий, поэтому лучше ставить от самого Docker.

Третья команда добавляет вашего пользователя в группу docker, чтобы не писать sudo перед каждой командой. Изменение подхватится после перелогина: выйдите из сессии и зайдите снова.

Установка на Windows и macOS:

Контейнерам нужно ядро Linux, поэтому на Windows и macOS Docker крутится внутри легковесной виртуальной машины (мы говорили об этом в первой главе). Ставится все одним пакетом Docker Desktop, виртуалку он поднимает сам. На Windows ему нужен WSL2: откройте PowerShell от администратора, выполните wsl --install и перезагрузитесь. На macOS есть еще OrbStack и Colima, они заметно легче, но для старта хватит Docker Desktop. Для личного использования и учебы он бесплатен, платная лицензия нужна только компаниям от 250 сотрудников или с выручкой от 10 млн долларов.

Проверяем и запускаем первый контейнер:

Код: Выделить всё

docker version
docker run hello-world
Если docker version показывает и Client, и Server, демон запущен и связь с ним есть. А docker run hello-world прокручивает за кулисами целую цепочку: клиент просит демона запустить контейнер из образа hello-world, демон не находит образ локально, скачивает его из реестра Docker Hub, создает контейнер и запускает, тот печатает приветствие и завершается. Про образы и реестр подробно поговорим в третьей главе.

Теперь что-то полезнее:

Код: Выделить всё

docker run -d --name web -p 8080:80 nginx:1.27
docker ps
curl http://localhost:8080
docker stop web
docker rm web
Здесь три важных флага. Флаг -d запускает контейнер в фоне, иначе терминал будет занят выводом nginx. Флаг --name дает контейнеру имя, без него Docker сгенерирует случайное вроде nervous_tesla. А -p 8080:80 пробрасывает порт: 8080 на вашей машине ведет на порт 80 внутри контейнера, где слушает nginx. После curl вы увидите стандартную страницу Welcome to nginx. Команда docker ps показывает работающие контейнеры, docker stop останавливает, docker rm удаляет.

Если pull из Docker Hub идет еле-еле или упирается в лимиты на анонимные скачивания, пропишите зеркало в /etc/docker/daemon.json:

Код: Выделить всё

{
  "registry-mirrors": ["https://mirror.gcr.io"]
}
После правки перезапустите демон командой sudo systemctl restart docker.

Типичные грабли:

Permission denied при обращении к /var/run/docker.sock. Значит, пользователь не в группе docker или вы не перелогинились после usermod. Быстрая проверка: команда id должна показывать docker в списке групп.

Docker Desktop на Windows не стартует. Чаще всего в BIOS выключена аппаратная виртуализация (VT-x у Intel, AMD-V у AMD). Без нее не заведется ни WSL2, ни Docker, включается в настройках BIOS/UEFI.

Ошибка port is already allocated. Порт 8080 на хосте уже кем-то занят, другим контейнером или локальным приложением. Возьмите другой, например -p 8081:80.

Контейнеры копятся. Каждый docker run создает новый контейнер, и остановленные никуда не деваются: docker ps их не показывает, а docker ps -a покажет все. Для разовых экспериментов добавляйте флаг --rm, тогда контейнер удалится сам после остановки. Накопившийся мусор чистит docker container prune.

Итог:

Docker установлен, вы запустили hello-world и nginx, освоили docker run, ps, stop и rm и знаете, куда смотреть при типовых ошибках. В следующей главе разберем, из чего контейнеры создаются: образы, их слои, теги и Docker Hub.
👍3 ❤️2 🔥4 😄 🤔1
✔ Лучший ответ сформирован автоматически — ymstar
Marina_DevOps писал(а):выйдите из сессии и зайдите снова перелогиниваться не обязательно, в том же терминале можно выполнить newgrp docker и группа подхватится сразу. действует правда только в текущей сессии, но чтобы быстро проверить установку хватает
Перейти к ответу →
Аватара пользователя
ymstar
Сообщения: 1
Зарегистрирован: 12 май 2026, 11:40

Re: Установка Docker и запуск первого контейнера

Сообщение ymstar »

✔ Лучший ответ — сформирован автоматически
Marina_DevOps писал(а):выйдите из сессии и зайдите снова
перелогиниваться не обязательно, в том же терминале можно выполнить newgrp docker и группа подхватится сразу. действует правда только в текущей сессии, но чтобы быстро проверить установку хватает
👍 ❤️ 🔥1 😄 🤔
Аватара пользователя
joel
Сообщения: 2
Зарегистрирован: 22 май 2026, 13:13

Re: Установка Docker и запуск первого контейнера

Сообщение joel »

а на windows 10 home все это заведется? помню пару лет назад docker desktop требовал именно pro из-за hyper-v. upd: поставил, с wsl2 работает и на home, hyper-v не понадобился
👍1 ❤️1 🔥 😄 🤔
Аватара пользователя
paffelt
Сообщения: 2
Зарегистрирован: 15 май 2026, 02:20

Re: Установка Docker и запуск первого контейнера

Сообщение paffelt »

спасибо за docker ps -a, я неделю не мог понять куда утекает место на vps за 350 руб. оказалось там полсотни мертвых контейнеров от моих же экспериментов, docker container prune разом все вычистил
👍3 ❤️ 🔥 😄 🤔
Аватара пользователя
vimninja
Сообщения: 1
Зарегистрирован: 21 май 2026, 16:37

Re: Установка Docker и запуск первого контейнера

Сообщение vimninja »

Marina_DevOps писал(а):port is already allocated
у меня эта ошибка была не из-за другого контейнера, а из-за томката на хосте, который сидел на 8080. так что если docker ps пустой, а порт занят, смотрите ss -tlnp, кто его реально держит
👍 ❤️3 🔥 😄 🤔
Ответить
← Предыдущая глава
Что такое Docker и какие задачи он решает
Следующая глава →
Образы: слои, теги и реестр Docker Hub

Все главы курса «Docker с нуля»

Поделиться темой: ✈ Telegram VK

Вернуться в «Docker с нуля»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость