Если в системе существует группа docker , возможно, вам не нужно использовать команду sudo .Как описано в по этой ссылке , добавьте группу docker и добавьте своего пользователя в группу.Это позволит избежать использования sudo .Я только что проверил другие привилегированные команды, и они работали без каких-либо проблем для меня.Повторите шаги, описанные в приведенной выше ссылке:
sudo groupadd docker
sudo usermod -aG docker $USER
Демон Docker должен быть перезапущен для выполнения вышеприведенного действия или перезапустить компьютер.
Кстати,Насколько я знаю, в центре вашего вопроса лучший вариант - запустить с помощью скрипта оболочки.Это хороший подход, описанный ранее, но я бы написал другой, который позволяет передавать произвольные параметры и является более общим для любой команды, которая может вам понадобиться.
Файл: privileged-wrapper.sh
#!/bin/bash
IMAGE_NAME="your_image_name"
BINARY="$0"
BINARY="${BINARY#./}"
docker run --cap-add SYS_ADMIN --cap-add DAC_READ_SEARCH --rm "$IMAGE_NAME" "$BINARY" "$@"
И теперь вы можете создавать столько символических ссылок, сколько команд необходимо для этих возможностей (имейте в виду, что имя символической ссылки - это команда, запускаемая в контейнер).Ожидается, что команда, которая будет запущена, найдена в PATH .
chmod a+x privileged-wrapper.sh
ln -svf privileged-wrapper.sh ping
Наконец, просто запустите:
./ping -c 10