Перейти к содержимому
TelegramGitHub

Установка

Нужны три вещи: Docker, терминал и учебные файлы. Терминал разбирали в курсе CLI.

Слово «Docker» значит несколько вещей.

ЧастьЧто это
Docker EngineПрограмма, которая запускает контейнеры. Работает в фоне
Docker CLIКоманда docker. Вы пишете её в терминале, она говорит Engine, что делать
Docker ComposeКоманда docker compose. Запускает много контейнеров по одному файлу
Docker DesktopПриложение для macOS и Windows. Внутри: Engine, CLI, Compose и окно для просмотра контейнеров

Контейнеры Linux работают только на ядре Linux. На macOS и Windows Docker Desktop запускает маленькую виртуальную машину с Linux и держит Engine внутри неё. Вы этого не видите.

  1. Скачайте Docker Desktop с docker.com/products/docker-desktop. Выберите версию для вашего чипа: Apple Silicon (M1, M2, M3, M4) или Intel.

    Или поставьте через Homebrew:

    Окно терминала
    brew install --cask docker-desktop
  2. Откройте Docker Desktop из «Программ». Примите условия лицензии. Вход в аккаунт можно пропустить. Дождитесь, пока значок кита в верхнем меню перестанет мигать.

  3. Проверьте установку (ниже).

Окно терминала
docker --version
docker compose version

Ответ похож на это. Номера версий у вас будут другие:

Docker version 28.5.0, build 887030fbe8
Docker Compose version v5.5.1

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

Окно терминала
docker run --rm hello-world

Docker скачает маленький образ и запустит его. Вы увидите:

Hello from Docker!
This message shows that your installation appears to be working correctly.

Если вы видите это сообщение, Docker работает.

Окно терминала
cd ~
curl -L -o docker-practice.tar.gz https://dataengineer.ru/assets/practice/docker-practice.tar.gz
tar xzf docker-practice.tar.gz
cd docker-practice
ls

Проверка: ls показывает три имени:

README.txt app data
ФайлЧто внутри
data/orders.csv500 заказов интернет-магазина: дата, клиент, канал, сумма, статус
app/report.pyСкрипт на Python. Печатает выручку по каналам. Нужен только Python
app/load_orders.pyСкрипт на Python. Загружает заказы в Postgres. Нужна библиотека psycopg
app/requirements.txtСписок библиотек для скриптов

Посмотрите на данные:

Окно терминала
head -3 data/orders.csv
order_id,order_date,customer_id,channel,amount,status
1001,2024-02-27,110,email,261.07,completed
1002,2024-02-27,76,organic,157.27,completed

Python на вашем компьютере не нужен. Скрипты мы будем запускать внутри контейнеров.

Docker Desktop использует часть памяти и процессора вашего компьютера. Для курса хватит 4 ГБ памяти. Metabase в итоговой практике любит больше. Поставьте 6–8 ГБ, если можно.

Где менять:

  • macOS: Docker Desktop → Settings → Resources.
  • Windows (WSL 2): в файле %UserProfile%\.wslconfig. Напишите в нём две строки: [wsl2] и memory=6GB. Потом выполните в PowerShell wsl --shutdown и запустите Docker Desktop снова.
  • Linux: настраивать не нужно. Docker берёт память системы.

Если Docker Desktop нельзя, есть другие способы. Команды docker остаются теми же.

ВариантДля чего
ColimamacOS и Linux. Лёгкая виртуальная машина и Docker Engine. brew install colima docker docker-compose, затем colima start. Для docker compose подключите плагин по инструкции Colima
Rancher DesktopmacOS, Windows, Linux. Бесплатное приложение с окном, как Docker Desktop
PodmanLinux, macOS, Windows. Своя программа. Команды почти те же: podman run

В курсе мы пишем docker. С Colima и Rancher Desktop всё работает без изменений.

  • Cannot connect to the Docker daemon ... Is the docker daemon running? Docker Desktop не запущен. Откройте его и подождите, пока Engine запустится. На Linux: sudo systemctl start docker.
  • permission denied while trying to connect to the Docker daemon socket (Linux). Вы не в группе docker. Выполните sudo usermod -aG docker $USER и войдите в систему заново.
  • docker: command not found в WSL. В Docker Desktop откройте Settings → Resources → WSL integration и включите вашу Ubuntu.
  • Docker на Windows просит включить виртуализацию. Включите её в BIOS (Intel VT-x или AMD-V).
  • curl: command not found. Поставьте curl: sudo apt install -y curl.

Дальше: Что такое контейнер.