Что означает ошибка 'docker: command not found'
Ошибка docker: command not found в Linux означает, что командная оболочка (bash, zsh и др.) не может найти исполняемый файл docker в директориях, указанных в переменной окружения PATH.
Полный текст ошибки может выглядеть так:
bash: docker: command not found
или
zsh: command not found: docker
Эта ошибка возникает при попытке запустить любую команду Docker (docker --version, docker ps и т.д.). Код возврата 127 (стандартный для "команда не найдена") подтверждает, что система не обнаружила исполняемый файл docker в путях поиска.
Причины возникновения
- Docker не установлен на системе вообще.
- Docker установлен, но путь к исполняемому файлу не добавлен в переменную
PATH. Это может случиться при ручной установке из бинарного архива или если пакетный менеджер не настроил PATH автоматически. - Сессия терминала не обновлена после установки Docker. Изменения в
PATHвступают в силу только после перезагрузки сессии (или выполненияsourceдля файла профиля оболочки). - Попытка запуска Docker через
sudoс очищенным окружением (по умолчаниюsudoможет сбрасыватьPATH). В этом случае Docker может быть доступен только с указанием полного пути. - Повреждение установки Docker или удаление исполняемого файла.
Способы решения
Способ 1: Установка Docker
Если Docker не установлен, выполните установку, соответствующую вашему дистрибутиву.
Для Ubuntu/Debian:
sudo apt update
sudo apt install docker.io
Для CentOS/RHEL 7:
sudo yum install docker
Для CentOS/RHEL 8 / Fedora:
sudo dnf install docker
Для Arch Linux:
sudo pacman -S docker
После установки проверьте, что файл docker появился в стандартных путях (обычно /usr/bin/docker).
Способ 2: Добавление пути Docker в переменную PATH
Если Docker установлен, но команда не работает, нужно добавить директорию с исполняемым файлом в PATH.
- Определите расположение
docker:sudo find / -name docker -type f 2>/dev/null | head -5
Обычно путь —/usr/bin/dockerили/usr/local/bin/docker. - Добавьте путь в
PATHчерез файл конфигурации оболочки:- Для bash (стандартная оболочка в Ubuntu/Debian/CentOS):
(заменитеecho 'export PATH=$PATH:/usr/bin' >> ~/.bashrc/usr/binна вашу директорию, если она другая) - Для zsh:
echo 'export PATH=$PATH:/usr/bin' >> ~/.zshrc
- Для bash (стандартная оболочка в Ubuntu/Debian/CentOS):
- Примените изменения:
source ~/.bashrc # или source ~/.zshrc
Способ 3: Перезагрузка сессии
Иногда достаточно просто перезапустить терминал или выйти и заново войти в систему. Это обновит PATH с учетом изменений, внесённых установщиком пакета.
Способ 4: Проверка прав доступа и настройка sudo
Убедитесь, что у вашего пользователя есть права на выполнение файла docker:
ls -l $(which docker)
Если нет прав на выполнение (x), исправьте:
sudo chmod +x $(which docker)
Для использования Docker без sudo добавьте пользователя в группу docker:
sudo usermod -aG docker $USER
⚠️ Важно: После добавления в группу
dockerнеобходимо перезайти в систему или перезапустить сессию, чтобы изменения вступили в силу.
Способ 5: Проверка корректности установки
После выполнения предыдущих шагов проверьте работу Docker:
docker --version
Если команда возвращает версию, проблема решена. Для полной проверки запустите тестовый контейнер:
docker run hello-world
При успешном выполнении вы увидите приветственное сообщение от Docker.
Профилактика
- При установке через официальные репозитории (apt, dnf, yum, pacman) Docker обычно добавляется в
PATHавтоматически. После установки перезапустите терминал. - При ручной установке (загрузка бинарного архива) всегда добавляйте директорию с исполняемым файлом в
PATHвручную. - Регулярно обновляйте Docker через пакетный менеджер, чтобы избежать проблем с совместимостью.
- Используйте группы пользователей (
docker) для управления правами, а не запуск черезsudoкаждый раз.
Часто задаваемые вопросы
Q: Что делать, если which docker не находит команду, но Docker явно установлен?
A: Проверьте, существует ли файл docker в системе (sudo find / -name docker -type f). Если файл есть, но в нестандартной директории (например, /usr/local/bin/docker), добавьте эту директорию в PATH как описано в Способе 2.
Q: Почему после установки Docker через apt команда не работает до перезагрузки?
A: Пакет docker.io добавляет путь в PATH через файл /etc/profile.d/docker.sh, который загружается только при старте новой сессии. Перезапустите терминал или выполните source /etc/profile.d/docker.sh.
Q: Можно ли использовать Docker в cron-задачах?
A: Да, но в cron-задачах PATH обычно ограничен. Указывайте полный путь к docker (например, /usr/bin/docker) или настройте переменную PATH в самом cron-файле.
Q: Почему sudo docker работает, а docker — нет?
A: Это классический признак того, что docker не в PATH вашего пользователя, но установлен глобально. При использовании sudo может загружаться другой конфигурационный файл, где PATH включает системные директории. Решение: добавьте docker в PATH для вашего пользователя (Способ 2).