Learning Platform
Глоссарий Troubleshooting
Урок 06.03 · 20 мин
Начальный
dockerinstallcontainermacoswindowslinux

Ставим Docker

Третий и последний инструмент нашего набора — Docker. Из всей тройки он самый «тяжёлый» по установке, так что не удивляйся, что шагов чуть больше. Зато после этого урока у тебя будет полноценное окружение junior-уровня, и мы это отпразднуем в следующем уроке.

Как и раньше: тебе пока не нужно уметь работать с Docker. Цель — поставить его, запустить тестовый контейнер hello-world и увидеть приветствие. Если увидишь — Docker работает.

Что такое Docker и контейнер в двух словах

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

Что делает Docker

Docker упаковывает программу со всем окружением в контейнер, который запускается одинаково везде.

программа + окружениеТвой код плюс всё, что ему нужно для работы: версии библиотек, настройки. Всё вместе
Docker
контейнерИзолированная коробка, которая запускается одинаково на любом компьютере с Docker. Конец проблеме у-меня-запускалось

Почему это важно для дата-инженера? В реальной работе данные обрабатывают не «голыми» программами на твоём ноутбуке, а наборами сервисов: базы данных, очереди, инструменты обработки. Поднять их вручную — мучение: каждый требует своей установки, версий, настроек. Docker позволяет запустить любой такой сервис одной командой, не засоряя свой компьютер. Поэтому почти все современные junior-курсы по данным предполагают, что у тебя есть Docker: ты просто запускаешь готовый контейнер с базой данных и тренируешься, а потом так же легко его удаляешь, не оставляя следов в системе.

Этого достаточно на старте. Подробный курс по Docker дам ссылкой в конце урока. А сейчас — установка.

Предупреждение: Docker должен быть запущен

Сразу запомни важное. В отличие от Python и git, Docker состоит из двух частей: команды docker в терминале и фонового процесса, который называется демон (daemon). Команда docker сама по себе ничего не делает — она лишь передаёт твои просьбы демону. Если демон не запущен, любая команда упадёт с ошибкой про connect to the Docker daemon.

WARNING

На macOS и Windows демон запускается, когда работает приложение Docker Desktop. Перед любой командой docker убедись, что Docker Desktop открыт и в его иконке нет надписи starting. На Linux демон обычно стартует сам как системная служба, но иногда его нужно запустить вручную (покажу ниже).

macOS

На Mac ставим Docker Desktop — это приложение, которое и поставит команду docker, и будет держать демон запущенным. Проще всего через Homebrew:

brew install --cask docker
open -a Docker

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

Windows (Docker Desktop + WSL2)

На Windows тоже ставим Docker Desktop, и он работает в связке с WSL2 (его мы настроили в уроке про Python).

  1. Скачай Docker Desktop с официального сайта docker.com (раздел Download для Windows) и установи обычным двойным кликом по установщику.
  2. Запусти Docker Desktop. В его настройках открой Resources, затем WSL Integration, и включи свой дистрибутив Ubuntu.
  3. Дождись, пока Docker Desktop покажет статус Running.

Дальше все команды docker выполняй внутри окна Ubuntu — так же, как Python и git.

Linux (Docker Engine)

На Linux ставим не Desktop, а сам движок Docker Engine. Официальный быстрый способ — установочный скрипт Docker:

curl -fsSL https://get.docker.com | sudo sh

После установки добавь себя в группу docker, чтобы не писать sudo перед каждой командой:

sudo usermod -aG docker $USER

Чтобы это вступило в силу, выйди из сессии и зайди снова (или перезагрузись). Если демон не запущен, стартани его:

sudo systemctl start docker
NOTE

Команда usermod добавляет тебя в группу docker, но новое членство применяется только в новой сессии терминала. Поэтому после неё обязательно перелогинься, иначе docker всё ещё будет требовать sudo.

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

На любой системе (на Windows — внутри Ubuntu) проверь установку двумя командами. Сначала версия:

docker --version

Ожидаемый вывод — строка с версией:

Docker version 28.0.1, build abc1234

Теперь главное — запусти тестовый контейнер:

docker run hello-world

Docker скачает крошечный учебный образ и запустит его. Ожидаемый вывод (сокращённо):

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
...
Hello from Docker!
This message shows that your installation appears to be working correctly.

Ключевая строка — Hello from Docker!. Если ты её видишь, значит Docker установлен, демон запущен и контейнеры работают. Первая строка про Unable to find image — это не ошибка, а нормальное поведение: образа ещё нет локально, и Docker его скачивает.

Что делать при ошибке

Самая частая ошибка новичка выглядит так:

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

Это не поломка. Docker буквально спрашивает: «а демон-то запущен?». Что делать:

  • На macOS / Windows — открой Docker Desktop и дождись статуса Running, потом повтори команду.
  • На Linux — выполни sudo systemctl start docker, и если ругается на права, проверь, что перелогинился после добавления в группу docker.

Подробный курс по Docker

Здесь мы только поставили Docker и запустили первый контейнер. Что такое образы, как писать свои контейнеры, тома, сети — всё это отдельная большая тема, которой посвящён целый курс.

Docker подробно: контейнеры с нуля

Попробуй сам

  1. Поставь Docker по шагам для своей системы.
  2. Убедись, что демон запущен (Docker Desktop в статусе Running, либо systemctl на Linux).
  3. Выполни docker --version — строка должна начинаться с Docker version.
  4. Выполни docker run hello-world и найди в выводе строку Hello from Docker!.

Если приветствие появилось — поздравляю, твоё окружение почти готово. Остался один контрольный урок.

Проверка знанийKnowledge check
Новичок выполнил docker run hello-world и получил ошибку Cannot connect to the Docker daemon. Is the docker daemon running? Объясни, что это значит и как починить, а также что в норме должно вывестись при успехе.
ОтветAnswer
Эта ошибка не поломка, а подсказка. Docker состоит из двух частей: команды docker в терминале и фонового процесса демона, который реально запускает контейнеры. Команда docker лишь передаёт просьбы демону. Сообщение Cannot connect to the Docker daemon означает, что демон не запущен. На macOS и Windows демон работает, пока открыт Docker Desktop, поэтому надо открыть приложение и дождаться статуса Running, затем повторить команду. На Linux демон запускают через sudo systemctl start docker, а ещё надо перелогиниться после добавления себя в группу docker. При успехе docker run hello-world скачивает тестовый образ и выводит строку Hello from Docker! с пояснением, что установка работает корректно. Строка Unable to find image в начале это норма: образа ещё нет локально и Docker его докачивает.

Проверьте понимание

Результат: 0 из 0
Концептуальный
Вопрос 1 из 3. Что такое контейнер в Docker, если объяснить в двух словах?

Закончили урок?

Отметьте его как пройденный, чтобы отслеживать свой прогресс

Войдите чтобы оценить урок

Прогресс модуля
0 из 4