Первые проверки
После установки полезно сразу пройти несколько команд, чтобы убедиться, что всё работает, и заодно увидеть, что у тебя за runtime, какая версия, какой storage driver. Эти команды — твой базовый диагностический набор. Когда что-то пойдёт не так через два месяца, ты вернёшься к ним.
В этом уроке пробежим: docker version, docker info, docker run hello-world, docker context ls. И в конце — что делать, если daemon не отвечает.
Базовый диагностический цикл
docker version
Самая быстрая проверка. Выводит версии клиента и сервера.
docker version
Пример вывода:
Client:
Version: 28.0.1
API version: 1.45
Go version: go1.22.5
Git commit: abc1234
Built: Mon Mar 03 12:00:00 2026
OS/Arch: darwin/arm64
Context: orbstack
Server: Docker Engine - Community
Engine:
Version: 28.0.1
API version: 1.45 (minimum version 1.24)
Go version: go1.22.5
Git commit: def5678
Built: Mon Mar 03 12:00:00 2026
OS/Arch: linux/arm64
Experimental: false
Что важно:
- OS/Arch у Client и Server разный. На mac client это
darwin/arm64, server —linux/arm64. Это потому что сервер крутится в Linux VM (через OrbStack или Docker Desktop). - API version. Если client старше server’а — могут не работать новые фичи. Если client новее — обычно работает обратная совместимость.
- Context: orbstack. Это активный context. Если у тебя несколько runtime’ов, тут видно с каким говоришь.
Если ты получаешь:
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
— значит daemon не запущен. Перейди в раздел «daemon не отвечает» внизу урока.
docker info
Это главный диагностический инструмент. Выводит развёрнутый отчёт о состоянии Docker.
docker info
Вывод длинный, разберём важные секции:
Server:
Containers: 5
Running: 2
Paused: 0
Stopped: 3
Images: 23
Server Version: 28.0.1
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Using metacopy: false
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: systemd
Cgroup Version: 2
Runtimes: io.containerd.runc.v2 runc
Default Runtime: runc
Init Binary: docker-init
containerd version: abc...
runc version: 1.1.x
init version: de40ad0
Security Options:
seccomp
Profile: builtin
cgroupns
Kernel Version: 6.6.0-orbstack
Operating System: OrbStack Linux
OSType: linux
Architecture: aarch64
CPUs: 8
Total Memory: 8GiB
Что смотреть:
- Storage Driver. Должен быть
overlay2. Это эффективный driver на основе overlayfs. Если видишьvfs— что-то не так, файловая система не поддерживает overlay. - Cgroup Version. Должен быть
2. v1 — старая, на современных системах не нужна. - Runtimes. Должно быть
runcкак default. Если видишьgvisorилиkata— у тебя нестандартная конфигурация. - Kernel Version. На mac/Win это будет Linux-kernel внутри VM. На Linux — kernel хоста. Должен быть 5.10+.
- Operating System. На mac OrbStack —
OrbStack Linux. Docker Desktop —Docker Desktop. На Linux — реальная ОС хоста. - CPUs / Total Memory. На mac это ресурсы, выделенные VM. Если показывает 4 CPU и 2 GB RAM — это явно мало, в settings своего runtime поставь больше.
Полезный фильтр:
docker info --format '{{.ServerVersion}} {{.Driver}} {{.CgroupVersion}}'
# 28.0.1 overlay2 2
Или JSON, чтобы скриптовать:
docker info --format '{{json .}}' | jq '.ServerVersion, .Driver, .CgroupVersion'
docker run hello-world
End-to-end проверка. Эта команда делает несколько вещей подряд:
- Проверяет, есть ли образ
hello-worldлокально. - Если нет — скачивает с Docker Hub.
- Создаёт контейнер из этого образа.
- Запускает его.
- Контейнер выводит сообщение и завершается.
docker run --rm hello-world
Флаг --rm нужен, чтобы контейнер автоматически удалился после завершения (иначе он останется в состоянии exited, и потом будет копиться мусор).
Ожидаемый вывод:
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
abc1234: Pull complete
Digest: sha256:def5678...
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
...
Если эта команда отработала — у тебя рабочий Docker. Это значит:
- CLI работает.
- Daemon отвечает.
- Сеть позволяет ходить на Docker Hub (важно — в корпоративных сетях это иногда блокировано).
- Storage driver работает (overlay2).
- Runtime запускает контейнеры.
docker context
Контексты — это разные «адреса» Docker daemon’а, с которыми может работать CLI. У тебя может быть:
default— daemon на хосте (через/var/run/docker.sock).orbstack— OrbStack runtime.desktop-linux— Docker Desktop.production-server— удалённый Docker через SSH на твоём сервере.
docker context ls
Пример:
NAME DESCRIPTION DOCKER ENDPOINT
default * Current DOCKER_HOST based configuration unix:///var/run/docker.sock
orbstack OrbStack unix:///Users/me/.orbstack/run/docker.sock
desktop-linux Docker Desktop unix:///Users/me/.docker/run/docker.sock
Звёздочка — активный.
Переключение:
docker context use orbstack
Создание контекста для удалённого сервера через SSH:
docker context create prod --docker "host=ssh://[email protected]"
docker context use prod
docker ps
# покажет контейнеры на prod.example.com
Это полезно для admin-задач, но для daily-работы junior’у не нужно.
Storage driver — почему overlay2
VFS и как overlay-файловая система работает в ядреoverlay2 — стандартный driver на современном Linux. Он использует overlay-файловую систему ядра, которая позволяет «накладывать» несколько слоёв друг на друга. Подробно мы это разберём в модуле 6 («Слои и хранение»).
Если в docker info ты видишь vfs — это означает, что overlay2 не поддерживается твоей файловой системой. На большинстве Linux это ext4 или xfs — оба поддерживают. Если у тебя файловая система btrfs или zfs — drivers будут другие.
На mac с OrbStack — overlay2. На Docker Desktop — overlay2. Это норма.
Daemon не отвечает — что делать
permission denied
На Linux при docker ps:
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock
Решение: добавь себя в группу docker:
sudo usermod -aG docker $USER
newgrp docker
docker ps
Cannot connect to daemon
Daemon не запущен.
- macOS OrbStack:
open -a OrbStack. - macOS Docker Desktop:
open -a Docker. - Linux:
sudo systemctl start docker(иsudo systemctl enable docker, чтобы стартовал автоматом). - Windows: запусти Docker Desktop через меню Пуск.
Проверь, что daemon запустился:
docker version
Сетевые проблемы при pull
Если docker run hello-world зависает на «Pulling from library/hello-world», скорее всего проблема с DNS или прокси:
- Проверь
ping registry-1.docker.io. - Если в корпоративной сети — может быть HTTP-прокси, который надо настроить в Docker.
- В Docker Desktop / OrbStack настройка прокси в Settings -> Proxies.
- На Linux —
/etc/systemd/system/docker.service.d/http-proxy.conf.
Disk full
docker run валится с no space left on device — у тебя кончился диск (на mac — диск VM, на Linux — диск хоста). Освобождение:
docker system df # сколько занято
docker system prune -a --volumes # удалить всё неиспользуемое
Эта команда удаляет неиспользуемые образы, контейнеры, сети, volumes. Будь осторожен — если у тебя в volumes лежит важная база, не удаляй.
Попробуй сам
Открой терминал и выполни:
docker version
docker info | grep -E '(Server Version|Storage Driver|Cgroup Version|Operating System|Total Memory)'
docker run --rm hello-world
docker context ls
Все четыре команды должны отработать без ошибок. Если что-то падает — переходи в раздел «Daemon не отвечает».
Бонус-команда: посмотри, сколько у тебя ресурсов выделено:
docker run --rm alpine sh -c 'cat /proc/meminfo | head -3; nproc'
Это покажет память и число ядер, доступных контейнеру. На mac — это лимиты VM. На Linux — лимиты хоста.
Что дальше
В следующем модуле — первые контейнеры. Будем учиться запускать docker run, смотреть процессы через docker ps, заходить внутрь через docker exec, читать логи через docker logs. Это самый базовый цикл, который ты будешь делать каждый день.