Установка на 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, чтобы не писать 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 run -d --name web -p 8080:80 nginx:1.27
docker ps
curl http://localhost:8080
docker stop web
docker rm webЕсли pull из Docker Hub идет еле-еле или упирается в лимиты на анонимные скачивания, пропишите зеркало в /etc/docker/daemon.json:
Код: Выделить всё
{
"registry-mirrors": ["https://mirror.gcr.io"]
}Типичные грабли:
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.