Docker запускает команду для выполнения нескольких шагов в одной строке - PullRequest
1 голос
/ 25 июня 2019

Я пытаюсь запустить команду docker для выполнения следующих шагов с помощью одной строки команды:

A) Получение образа docker,
B) Затем запуск контейнера,
C)Выполните монтирование тома каталога от хоста к запущенному контейнеру,
D) И затем выдает команду сканирования внутри контейнера для захвата отчетов.

Я мог бы выполнить шаги a, b и c с помощью этой команды.

$ docker run -d -it --name test -v /root/tools:/var/local <mydocker-image-registry>

Но на последнем шаге D, т. Е. Для запуска сканирования внутри контейнера и сбора отчетов, я не могу добавить этот фрагмент команды к вышеуказанной команде и заставить ее работать.

Этот нижеприведенный фрагмент команды работает независимо, но не может присоединиться к вышеуказанной строке и заставить ее работать.

<scan> -s python -o ./reports

Контейнер только что запустился и вышел из системы при приведенной ниже команде

docker run -d -it --name test -v /root/tools:/var/local <mydocker-image-registry> <scan> -s python -o ./reports

Также выполнил некоторый основной поиск и попытался добавить точку входа, как показано ниже

docker run -d -it --name test -v /root/tools:/var/local <mydocker-image-registry> -- entrypoint <scan> -s python -o ./reports

Но это тоже не сработало.Только что получил ошибку docker: Error response from daemon: OCI runtime create failed: container_linux.go:345: starting container process caused "exec: \"--\": executable file not found in $PATH": unknown.

Ожидается выполнение всех вышеперечисленных 4 шагов, выполняемых с помощью одной команды docker, и я получаю «отчеты», заполненные результатами.

1 Ответ

1 голос
/ 25 июня 2019

Поскольку --entrypoints не работает с <scan> -s python -o ./reports, в результате вы получили ошибку ниже, так как в пути нет исполняемого файла.

docker: Error response from daemon: OCI runtime create failed: container_linux.go:345: starting container process caused "exec: \"--\": executable file not found in $PATH": unknown.

Итак, когда вы получили вышеуказанную ошибку, вот пример на скриншоте вместе с комментарием.

enter image description here

Таким образом, вместо исходной точки входа укажите параметр 4 в качестве команды аргумента для команды запуска докера.

docker run --rm -dit --name test -v /root/tools:/var/local alpine ash -c "date"

это напечатает дату и выйдет.

Если вы хотите, чтобы он продолжал работать, то вы немного изменили его.

docker run --rm -it --name test alpine ash -c "date; tail -f /dev/null"

это заставит контейнер работать без каких-либо действий.

Другим примером может служить python, печатающий hello world внутри одной команды.

 docker run --rm -it --name test python:3.6-alpine ash -c "echo \"print('Hello, world ')\" >> ab.py; python ./ab.py"
...