Docker команда не найдена linux
В этом руководстве мы объясним, как установить Docker на Debian 10 Buster, и изучим основные концепции и команды Docker.
Установить Docker на Debian
Выполните следующие шаги, чтобы установить последнюю стабильную версию Docker из репозиториев Docker.
Импортируйте GPG-ключ репозитория с помощью следующей команды curl :
В случае успеха команда вернет OK .
Добавьте стабильный репозиторий Docker APT в список репозиториев программного обеспечения вашей системы:
$(lsb_release -cs) вернет имя дистрибутива Debian . В данном случае это buster .
Обновите список пакетов apt и установите последнюю версию Docker CE (Community Edition):
После завершения установки служба Docker запустится автоматически. Чтобы проверить это, введите:
На момент написания последней стабильной версии Docker была 19.03.1 :
Выполнение команды Docker без Sudo
По умолчанию только root и пользователь с привилегиями sudo могут выполнять команды Docker.
Если вы хотите выполнять команды Docker без добавления sudo вам необходимо добавить своего пользователя в группу докеров, которая создается во время установки пакета Docker CE. Для этого введите:
Выйдите из системы и войдите снова, чтобы членство в группе обновилось.
После этого убедитесь, что вы можете запускать команды docker без ввода sudo :
Использование Docker
Теперь, когда вы установили на свой Debian 10, давайте рассмотрим основные концепции и команды докеров.
Образы Docker
Большинство образов Docker доступны в Docker Hub . Это облачная служба реестра, которая, помимо прочего, используется для хранения образов Docker в общедоступном или частном репозитории.
Чтобы найти изображение в реестре Docker Hub, используйте команду docker search . Например, чтобы найти образ Debian, вы должны ввести:
Контейнеры Docker
Экземпляр изображения называется контейнером. Контейнер представляет среду выполнения для отдельного приложения, процесса или службы.
Для запуска, остановки, удаления и управления контейнером используйте команду docker container . Например, следующая команда запустит контейнер Docker на основе образа Debian. Если у вас нет образа локально, сначала он будет загружен:
Контейнер Debian остановится сразу же после загрузки, потому что у него нет длительного процесса и никакой другой команды не предоставляется. Контейнер загрузился, запустил пустую команду и завершил работу.
-it позволяет вам взаимодействовать с контейнером через командную строку. Чтобы запустить интерактивный контейнер, введите:
Как видно из выходных данных выше, после запуска контейнера командная строка изменяется, что означает, что теперь вы работаете изнутри контейнера .
Если у вас нет работающих контейнеров, вывод будет пустым.
Чтобы просмотреть все контейнеры, передайте ему переключатель -a :
Чтобы удалить один или несколько контейнеров, просто скопируйте идентификатор контейнера (или идентификаторы) и вставьте их после команды container rm :
Выводы
Для получения дополнительной информации ознакомьтесь с официальной документацией Docker .
В Ubuntu 16.01 установлены и docker, и docker-compose.
Из-за ошибки при попытке загрузить композицию с помощью curl я в итоге установил ее с помощью pip.
Docker версии 1.12.0, сборка 8eab29e docker-compose версия 1.8.0, сборка 94f7016
Тем не менее, когда я пытаюсь запустить docker-compose с помощью sudo, я получаю следующее (хорошо использовать sudo с docker)
Я предполагаю, что существуют разные определения того, что означает «установленный». Я использовал docker-compose на том же компьютере, который утверждает, что он не установлен.
Я пробовал следующее - но все равно получаю ту же ошибку:
Вот как я решил эту проблему: см. документацию Docker Compose
После того, как вы выполните команду curl, она поместит docker-compose в
-
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose литий>
А теперь, если вы это сделаете: docker-compose --version
Вы увидите, что docker-compose теперь находится в PATH
Вывод dpkg -s . показывает, что docker-compose не устанавливается из пакета. Без дополнительной информации у вас есть как минимум две возможности:
docker-compose просто вообще не установлен, и вам нужно его установить.
Решение здесь простое: установите docker-compose .
docker-compose установлен в вашем каталоге $HOME (или в другом месте, расположенном вне $PATH )
В этом случае есть несколько решений. Возможно, проще всего заменить:
Это вызовет sudo с полным путем к docker-compose
Вы также можете установить docker-compose в общесистемный каталог, например /usr/local/bin
Если вы попытались установить через официальную страницу docker-compose, где вам нужно скачать бинарный файл с помощью curl:
Тогда не забудьте добавить исполняемый флаг в двоичный файл:
Если docker-compose установлен с помощью python-pip
попробуйте использовать pip show --files docker-compose , чтобы увидеть, где он установлен.
Если docker-compose установлен по пути пользователя, попробуйте:
Как я вижу из вашего обновленного поста, docker-compose устанавливается по пути пользователя /home/user/.local/bin , и если этот путь не в вашем локальном путь $PATH , затем попробуйте:
Я оставлю это здесь как возможное исправление, по крайней мере, работало для меня и могло бы помочь другим. Уверен, это будет исправлено только в Linux.
Я решил не идти с установкой pip и перейти на версию github (первый вариант в руководстве по установке).
Вместо того, чтобы помещать скопированный каталог docker-compose в /usr /local /bin /docker-compose из команды curl /github, я выбрал /usr /bin /docker-compose, который является местоположением самого Docker и будет заставить программу работать в корне. Таким образом, он работает в root и sudo, но теперь не будет работать без sudo настолько противоположного эффекта, который вы все равно хотите запускать как пользователь.
У меня та же проблема, я решил проблему:
step-1: загрузите docker-compose с помощью следующей команды.
Мы рассмотрим процесс установки Docker на системы семейства Linux — а именно, CentOS, Fedora и Ubuntu.
Ubuntu
Docker на Ubuntu ставится, относительно, просто.
Обновляем список пакетов:
Устанавливаем докер командой:
apt-get install docker docker.io
Разрешаем автозапуск докера и стартуем его:
systemctl enable docker
systemctl start docker
CentOS 8
dnf install wget
Скачиваем конфигурационный файл для репозитория докер:
Теперь устанавливаем docker:
dnf install docker-ce docker-ce-cli
И разрешаем автозапуск сервиса и стартуем его:
systemctl enable docker --now
CentOS 7
yum install wget
Скачиваем файл репозитория:
yum install docker-ce docker-ce-cli containerd.io
Запускаем его и разрешаем автозапуск:
systemctl enable docker --now
Fedora
Устанавливаем плагин, дающий дополнительные инструменты при работе с пакетами:
yum install dnf-plugins-core
dnf install docker-ce docker-ce-cli containerd.io
Запускаем его и разрешаем автозапуск:
systemctl enable docker --now
Проверка
Чтобы убедиться, что docker в рабочем состоянии, выполняем команду:
docker run hello-world
Сначала система обнаружит, что нужного образа нет и загрузит его:
После отобразит приветствие:
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker.
Docker работает корректно.
Установка Compose
Команда docker-compose позволяет развернуть многоконтейнерные Docker-приложения.
* где 1.29.2 — последняя версия файла.
Даем права файлу на исполнение:
chmod +x /usr/bin/docker-compose
Запускаем docker-compose с выводом его версии:
Возможные проблемы
1. undefined symbol: seccomp_api_set
Сервис докера не запускается, а в логе можно увидеть следующий текст ошибки:
/usr/bin/containerd: symbol lookup error: /usr/bin/containerd: undefined symbol: seccomp_api_set
Причина: ошибка возникает, если установить свежую версию containerd на систему с необновленной библиотекой libseccomp.
Решение: обновляем libseccomp.
yum update libseccomp
apt-get --only-upgrade install libseccomp2
2. error initializing network controller list bridge addresses failed no available network
Сервис докера не запускается, а в логе можно увидеть следующий текст ошибки:
error initializing network controller list bridge addresses failed no available network
Причина: система не может создать docker-интерфейс.
Решение: создаем docker-интерфейс вручную. Устанавливаем утилиту для работы с bridge-интерфейсами.
yum install bridge-utils
apt-get install bridge-utils
brctl addbr docker0
Назначаем IP-адреса на созданный интерфейс:
ip addr add 192.168.84.1/24 dev docker0
* в нашем примере для docker мы задали адрес 192.168.84.1.
У меня есть Docker-контейнер с Ubuntu, который я сделал следующим образом:
Однако, похоже, нет ping . Например
Нужно ли устанавливать это?
Кажется, довольно простая команда отсутствует. Я пытался whereis ping что ничего не сообщает.
Вполне уместно, чтобы изображение Docker было минимальным. В большинстве случаев контейнер никогда ничего не делает, кроме запуска одного приложения - зачем устанавливать то, что не нужно приложению? Если вы просто хотите запустить диагностику, может быть проще запустить busybox (в образ которого входит ping), например: docker run -it --rm busybox ping my-server.Образы докеров довольно минимальны, но вы можете установить их ping в свой официальный образ докера Ubuntu через:
Скорее всего, вам не нужно ping ваше изображение, и вы просто хотите использовать его для тестирования. Приведенный выше пример поможет вам.
Но если вам нужно, чтобы ping существовал на вашем изображении, вы можете создать Dockerfile или commit контейнер, в котором вы запускали вышеуказанные команды, для нового изображения.
Обратите внимание, что существуют рекомендации по созданию образов Docker, такие как очистка файлов apt-кэша после и т. Д.
Это страница Docker Hub для Ubuntu и это то , как он будет создан. На нем установлены только (несколько) минимальные пакеты, поэтому, если вам нужно что-то дополнительное, вам нужно установить его самостоятельно.
Однако обычно вы создаете Dockerfile и создаете его:
Используйте Google , чтобы найти учебники и просматривать существующие Dockerfiles , чтобы увидеть , как они обычно делают вещи :) Для размера Примера изображения должны быть сведены к минимуму путем запуска apt-get clean && rm -rf /var/lib/apt/lists/* после apt-get install команды.
echo -e фактически игнорирует стандарт POSIX sh , который не позволяет ему ничего делать, кроме печати -e на выходе. (Даже с некоторыми версиями bash это поведение по умолчанию). printf Вместо этого используйте :, printf '%s\n' "FROM ubuntu" "RUN apt-get update && apt-get install -y iputils-ping" "CMD bash" и смотрите раздел ИСПОЛЬЗОВАНИЕ ПРИЛОЖЕНИЯ вышеупомянутого документа стандартов. Даже bash не будет поддерживать echo -e то, что вы ожидаете (но вместо этого будет вести себя в соответствии со стандартами) в скомпилированном режиме POSIX --enable-xpg-echo-default , с соответствующими переменными среды или другой конфигурацией времени выполнения. (POSIX позволяет echo вести себя в соответствии с реализацией, если задан -n в качестве первого аргумента или когда присутствуют какие-либо литералы с обратной косой чертой, но даже в этом случае он определяется реализацией , а не гарантируется стандартом, поэтому поведение зависит от отдельной оболочки в использовании). Спасибо за комментарии и улучшения, дружественный пример «копирования и вставки» был скорее послеподуманным.Обычно люди тянут официальное изображение Ubuntu / CentOS, но они не понимают, что эти изображения минимальны и не имеют ничего общего с этим.
Для Ubuntu это изображение создано из официальных tarfs rootfs, предоставленных Canonical. Учитывая, что это минимальная установка Ubuntu, этот образ по умолчанию включает только локали C, C.UTF-8 и POSIX.
Можно установить net-tools (включая ifconfig, netstat), ip-utils (включая ping) и другие подобные curl и т. Д. На контейнер и можно создать образ из контейнера или написать Dockerfile, который установит этот инструмент при создании образа.
Ниже приведен пример Dockerfile, при создании изображения из него будут использоваться следующие инструменты:
Читайте также: