Если основной целью вашей программы является чтение и запись локальных файлов, рассмотрите возможность запуска ее не в Docker.Это полностью исключает проблемы жизненного цикла контейнера и сопоставления файловой системы, с которыми вы сталкиваетесь.
sudo apt install snapd
sudo systemctl start snapd
sudo snap install amass
./bin/amass --passive -d example.com -o out.txt
В противном случае контейнеры Docker имеют свои собственные отдельные файловые системы и должны явно получать доступ к файлам хост-системы.См. Документацию Docker по bind mounts .Вы можете запустить эту программу как
sudo docker build -t amass https://github.com/OWASP/Amass.git
sudo docker run --rm -v $PWD:/data \
amass --passive -d example.com -o /data/out.txt
cat out.txt
Обратите внимание, что вы можете указать любой каталог хоста в параметрах docker run -v
, даже системные каталоги, такие как /etc
и /bin
, и дляПо этой причине я явно вызвал шаги, требующие эквивалентных прав доступа root (членство в группе docker
эквивалентно наличию root).Также обратите внимание, что без Docker вы можете запустить инструмент от имени обычного пользователя, но для запуска контейнера Docker вы должны иметь права root.
Если ваша проблема заключается в том, что контейнер выходит ("... в остановленном состоянии")state ") ваш самый первый шаг должен посмотреть на docker logs
и запустить контейнер на переднем плане без опции -d
, чтобы понять почему.* * * * * * * * * * * * * * * * * * * * * * Несмотря на то, что docker exec
является полезным инструментом отладки, он не был предназначен для основного способа взаимодействия с контейнером.