Docker команда не найдена linux

Обновлено: 03.07.2024

В этом руководстве мы объясним, как установить 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, при создании изображения из него будут использоваться следующие инструменты:

Читайте также: