У меня есть Docker-контейнер с Ubuntu, который я сделал следующим образом:
docker run -it ubuntu /bin/bash
Однако, похоже, нет ping
. Например
bash: ping: command not found
Нужно ли устанавливать это?
Кажется, довольно простая команда отсутствует. Я пытался whereis ping
что ничего не сообщает.
Ответы:
Образы докеров довольно минимальны, но вы можете установить их
ping
в свой официальный образ докера Ubuntu через:Скорее всего, вам не нужно
ping
ваше изображение, и вы просто хотите использовать его для тестирования. Приведенный выше пример поможет вам.Но если вам нужно, чтобы ping существовал на вашем изображении, вы можете создать
Dockerfile
илиcommit
контейнер, в котором вы запускали вышеуказанные команды, для нового изображения.Commit:
Dockerfile:
Обратите внимание, что существуют рекомендации по созданию образов Docker, такие как очистка файлов apt-кэша после и т. Д.
источник
Temporary failure resolving 'security.ubuntu.com'
очевидно, потому что сеть не присутствует.Это страница 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"
и смотрите раздел ИСПОЛЬЗОВАНИЕ ПРИЛОЖЕНИЯ вышеупомянутого документа стандартов.echo -e
то, что вы ожидаете (но вместо этого будет вести себя в соответствии со стандартами) в скомпилированном режиме POSIX--enable-xpg-echo-default
, с соответствующими переменными среды или другой конфигурацией времени выполнения.-n
в качестве первого аргумента или когда присутствуют какие-либо литералы с обратной косой чертой, но даже в этом случае он определяется реализацией , а не гарантируется стандартом, поэтому поведение зависит от отдельной оболочки в использовании).Обычно люди тянут официальное изображение Ubuntu / CentOS, но они не понимают, что эти изображения минимальны и не имеют ничего общего с этим.
Для Ubuntu это изображение создано из официальных tarfs rootfs, предоставленных Canonical. Учитывая, что это минимальная установка Ubuntu, этот образ по умолчанию включает только локали C, C.UTF-8 и POSIX.
Можно установить net-tools (включая ifconfig, netstat), ip-utils (включая ping) и другие подобные curl и т. Д. На контейнер и можно создать образ из контейнера или написать Dockerfile, который установит этот инструмент при создании образа.
Ниже приведен пример Dockerfile, при создании изображения из него будут использоваться следующие инструменты:
или запустите контейнер из базового образа и установите эти утилиты в контейнер, а затем передайте его в образ. docker commit -m "любое описательное сообщение" container_id image_name: lattest
В этом образе будет установлено все.
источник
В качестве альтернативы вы можете использовать образ Docker, на котором уже установлен ping, например busybox :
источник
apt-get iputils-ping
изображение, которое нуждается в этом.Каждый раз, когда вы получаете такую ошибку
На хосте с этой командой, уже работающей с этим решением :
У вас нет хоста с установленным пакетом? Попробуйте это :
источник
Иногда минимальная установка Linux в Docker не определяет путь, и поэтому необходимо вызывать ping, используя ....
источник
Я использовал приведенное ниже утверждение о Debian 10
источник