Основы Docker
1Что такое Docker и зачем он нужен← вы здесь2Образы Docker: теги, слои, реестры3Контейнеры: запуск, управление, отладка
Урок 1~9 минут

Что такое Docker и зачем он нужен

Docker — инструмент для запуска приложений в контейнерах. Один раз настроил окружение — работает везде одинаково.

Проблема без Docker

bash
# На твоей машине всё работает
node -v  # v20.0.0
 
# На сервере другая версия
node -v  # v14.0.0 — и всё ломается

Классика: «works on my machine». Docker решает это — приложение везёт своё окружение с собой.

Контейнер vs Виртуальная машина

Попробуй в симуляции

VM запускает полноценную ОС внутри хоста. Это тяжело — образ VM весит гигабайты, запуск занимает минуты.

Контейнер — изолированный процесс, который использует ядро хостовой ОС. Образ весит мегабайты, запуск — секунды.

VM:         Host OS → Hypervisor → Guest OS → App
Контейнер:  Host OS → Docker Engine → Container → App

Image и Container

Image (образ) — неизменяемый снимок файловой системы с приложением и его зависимостями. Как класс в ООП.

Container (контейнер) — запущенный экземпляр образа. Как объект, созданный из класса. Из одного image можно запустить сколько угодно контейнеров.

bash
docker pull nginx          # скачать образ
docker run nginx           # запустить контейнер
docker run -d -p 80:80 nginx  # в фоне, маппинг порта

Docker Hub

Публичный реестр образов — hub.docker.com. Тысячи готовых образов: nginx, postgres, redis, node, python.

bash
docker pull postgres:16    # конкретная версия
docker pull ubuntu:22.04   # базовый образ для своих

Первый запуск

bash
# Запустить интерактивно
docker run -it ubuntu bash
 
# Теперь ты внутри контейнера Ubuntu
ls /
exit
 
# Контейнер остановился

Флаги: -i — интерактивный ввод, -t — псевдо-TTY (терминал), -d — detach (фоновый режим).

Команды

bash
docker pull <image>         # скачать образ
docker images               # список образов
docker run <image>          # запустить контейнер
docker run -d <image>       # в фоне
docker run -it <image> bash # интерактивно
docker ps                   # работающие контейнеры
docker ps -a                # все, включая остановленные
docker stop <id>            # остановить
docker rm <id>              # удалить

В следующем уроке — образы подробнее: теги, реестры, docker inspect.

Контейнер — изолированный процесс со своей файловой системой. VM — отдельная ОС. Docker легче и быстрее.
🐳
VM vs Docker Container
VIRTUAL MACHINE
🚀
App
your code
⚙️
Runtime
Node.js, Python...
🖥️
Guest OS
Ubuntu ~1GB
🔧
Hypervisor
VMware, VirtualBox
💻
Host OS
Windows / Linux
🖥️
Hardware
CPU, RAM, Disk
Размер: ~1-20GB | Старт: 30-120 сек
DOCKER CONTAINER
🚀
App A
port 3000
🎯
App B
port 8080
namespace изоляция
🐳
Docker Engine
containerd + runc
syscall
💻
Host OS Kernel
общее ядро Linux
🖥️
Hardware
CPU, RAM, Disk
Размер: ~10-200MB | Старт: 0.1-2 сек
Сравни время запуска
🎯
Миссия 1 из 3
Чем контейнер отличается от виртуальной машины?