Как установить Docker на Ubuntu 24
Установить Docker на Ubuntu так, как советует сам Docker, — значит подключить его apt-репозиторий: там свежий Docker Engine и плагин Compose. Пакет docker.io из Ubuntu тоже работает, но отстаёт по версии. Инструкция для Ubuntu 24.04 и 22.04, а ещё в ней — как запускать docker без sudo и что делать с самыми частыми ошибками.
Как убрать старые пакеты Docker
Если Docker уже ставили из пакетов Ubuntu (docker.io, docker-compose, podman-docker), сначала удалите их, иначе они будут конфликтовать с пакетами Docker. Команда удаляет только эти пакеты. Образы, контейнеры и тома в /var/lib/docker/ остаются на месте.
sudo apt remove $(dpkg --get-selections docker.io docker-compose docker-compose-v2 docker-doc docker-buildx podman-docker containerd runc | cut -f1)На свежей системе apt ответит, что ни одного из них нет. Так и должно быть.
Установка Docker на Ubuntu из репозитория Docker
Команды ниже — со страницы установки Docker. Они добавляют ключ подписи Docker и файл репозитория для вашего выпуска Ubuntu, а затем обновляют список пакетов.
# Ключ подписи Docker:
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Репозиторий Docker в источниках apt:
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
sudo apt updateТеперь поставьте Docker Engine, его командную строку, containerd и плагины Buildx и Compose:
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginСлужба запустится сама и будет подниматься после перезагрузки. Проверьте её:
sudo systemctl status dockerНужна строка Active: active (running). Если служба не работает, запустите её:
sudo systemctl start dockerКак проверить Docker через hello-world
Запустите тестовый образ. Docker скачает его, запустит контейнер, тот напечатает сообщение и завершится.
sudo docker run hello-world
docker --version
docker compose versionВ выводе должна быть строка Hello from Docker!. Две другие команды покажут версии Docker Engine и плагина Compose.
Как запускать docker без sudo
Пакет Docker создаёт группу docker. Её участники работают с сокетом Docker без sudo. Добавьте себя в группу и примените изменение в текущей оболочке — или выйдите из системы и зайдите снова.
sudo usermod -aG docker $USER
newgrp docker
docker run hello-worldГруппа docker даёт права уровня root: её участник может запустить контейнер, к которому подключена любая папка системы. Добавляйте туда только свою учётную запись и тех, кому доверили бы sudo.
Как запустить проект через Docker Compose
Compose теперь плагин, поэтому он запускается как подкоманда docker, через пробел. Старого docker-compose через дефис в системе нет. Для примера — проект из одного контейнера с Nginx. Создайте папку и в ней файл compose.yaml:
mkdir -p ~/hello
cd ~/hello
nano compose.yamlservices:
web:
image: nginx:alpine
ports:
- "127.0.0.1:8080:80"Запустите проект в фоне, посмотрите, что работает, и остановите его:
docker compose up -d
docker compose ps
docker compose downПорты, которые публикует Docker, идут в обход правил UFW. С записью "8080:80" контейнер был бы открыт всей сети, даже если UFW закрывает 8080. Приставка 127.0.0.1: оставляет его доступным только на этой машине. Открывайте порт в сеть, только когда это действительно нужно.
Частые проблемы с Docker
permission denied while trying to connect to the docker API at unix:///var/run/docker.sock(в старых версиях:…to the Docker daemon socket at…) — пользователь ещё не в группеdocker, или оболочку открыли до того, как вы в неё вступили. Выполните командуusermodиз раздела выше, выйдите и зайдите снова. Командаgroupsдолжна показатьdocker.Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?— служба остановлена. Запустите её:sudo systemctl start dockerЕсли она снова падает, смотрите журнал:sudo journalctl -u docker -n 50WARNING: Error loading config file: /home/user/.docker/config.json— папку~/.dockerсоздал прежний запуск docker черезsudo, и она принадлежит root. Верните её себе:sudo chown "$USER":"$USER" /home/"$USER"/.docker -Rdocker-compose: command not found— пишите compose послеdockerчерез пробел, как в разделе выше. Плагин Compose заменил старую программу.- apt сообщает о конфликте с
containerd— в системе остался старый пакетcontainerdилиrunc. Выполните команду удаления из первого раздела и установите заново.
Если вы работаете и на Mac

Сборка мусора в MacWashing находит кэш всех знакомых ей программ, в том числе спрятанный внутри их данных, а ещё журналы, мусор Xcode и остатки удалённых программ. Она показывает, сколько места занимает каждая находка, и очищает всё за один раз. Всё спорное остаётся без галочки, пока вы не решите.
Бесплатная пробная версия · macOS 14 и новее
Вопросы и ответы
Как установить Docker на Ubuntu?
Подключите apt-репозиторий Docker с его ключом подписи и поставьте пакеты: sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin Проверьте установку: sudo docker run hello-world
А можно взять пакет docker.io из Ubuntu?
Можно: это Docker в сборке Ubuntu, и он получает исправления безопасности. Обычно он старше пакетов самого Docker. Выберите один источник и не смешивайте их — пакеты конфликтуют.
Где Docker хранит образы и контейнеры?
В /var/lib/docker/. Сколько они занимают, покажет команда: docker system df А эта удаляет остановленные контейнеры, неиспользуемые сети, образы без тегов и кэш сборки, сначала спросив подтверждение: docker system prune