Подтвердить что ты не робот

Docker - Ubuntu - bash: ping: команда не найдена

У меня есть контейнер Docker под управлением Ubuntu, который я сделал следующим образом:

docker run -it ubuntu /bin/bash

однако он, похоже, не имеет ping. Например.

bash: ping: command not found

Нужно ли это устанавливать?

Кажется, что основная команда отсутствует. Я пробовал whereis ping, который ничего не сообщает.

4b9b3361

Ответ 1

Изображения Docker довольно минимальны, но вы можете установить ping в свое официальное изображение докеры Ubuntu с помощью:

apt-get update
apt-get install iputils-ping

Скорее всего, вам не нужно ping ваше изображение и просто хотите использовать его для тестирования. Вышеприведенный пример поможет вам.

Но если вам нужно, чтобы ping существовал на вашем изображении, вы можете создать контейнер Dockerfile или commit, в который вы запускали приведенные выше команды, к новому изображению.

Commit:

docker commit -m "Installed iputils-ping" --author "Your Name <[email protected]>" ContainerNameOrId yourrepository/imagename:tag

Dockerfile:

FROM ubuntu
RUN apt-get update && apt-get install -y iputils-ping
CMD bash

Обратите внимание, что есть рекомендации по созданию изображений докеров, например, очистка файлов кэша apt после и т.д.

Ответ 2

Это страница Docker Hub для Ubuntu, и так она создается. На нем установлены только (несколько) минимальные минимальные пакеты, поэтому, если вам нужно что-то дополнительное, вам нужно установить его самостоятельно.

apt-get update && apt-get install -y iputils-ping

Однако обычно вы создаете Dockerfile и создаете его:

mkdir ubuntu_with_ping
cat >ubuntu_with_ping/Dockerfile <<'EOF'
FROM ubuntu
RUN apt-get update && apt-get install -y iputils-ping
CMD bash
EOF
docker build -t ubuntu_with_ping ubuntu_with_ping
docker run -it ubuntu_with_ping

Пожалуйста, используйте Google, чтобы найти учебники и просмотреть существующие файлы Docker, чтобы увидеть, как они обычно работают :) Например, размер изображения должен быть минимизирован с помощью команды apt-get clean && rm -rf/var/lib/apt/lists/* после apt-get install команды apt-get install.

Ответ 3

В качестве альтернативы вы можете использовать образ Docker, на котором уже установлен ping, например busybox:

docker run --rm busybox ping SERVER_NAME -c 2

Ответ 4

Обычно люди тянут официальное изображение Ubuntu/CentOS, но они не понимают, что эти изображения минимальны и не имеют ничего общего с этим.

Для Ubuntu это изображение создано из официальных tarfs rootfs, предоставленных Canonical. Учитывая, что это минимальная установка Ubuntu, этот образ по умолчанию включает только локали C, C.UTF-8 и POSIX.

Можно установить net-tools (включая ifconfig, netstat), ip-utils (включая ping) и любые другие подобные curl и т.д. На контейнер и можно создать образ из контейнера или написать Dockerfile, который установит этот инструмент при создании образа.

Ниже приведен пример Dockerfile, при создании изображения из него будут использоваться следующие инструменты:

FROM vkitpro/ubuntu16.04
RUN     apt-get  update -y \
&& apt-get upgrade -y \
&& apt-get install iputils-ping -y \
&& apt-get install net-tools -y \
CMD bash

или запустить контейнер из базового образа и установить эти утилиты в контейнер, а затем зафиксировать изображение. docker commit -m "любое описательное сообщение" container_id image_name: lattest

В этом образе будет установлено все.

Ответ 5

Каждый раз, когда вы получаете такую ошибку

bash: <command>: command not found
  • На хосте с этой командой, уже работающей с этим решением:

    dpkg -S $(which <command>)
    
  • У вас нет хоста с установленным пакетом? Попробуйте это:

    apt-file search /bin/<command>