A Docker образ никогда не содержит запущенный процесс, он имеет только файловую систему и метаданные, необходимые для запуска контейнера. Когда контейнер запускается, он запускается независимо от его команды, и как только эта команда завершается, контейнер завершается. В контексте оболочки, если вы запустили команду, подобную показанной вами команде nohup
, и вернули приглашение оболочки, это было бы сигналом для выхода контейнера Docker.
Возможно, вы захотите этого * Команда 1004 * должна быть CMD вашего образа (то, что запускается при запуске контейнера). Это должен быть процесс переднего плана, иначе контейнер выйдет. Вы не хотите пытаться перенаправить его журналы здесь, иначе они будут записаны в файл внутри контейнера, который трудно получить. Наконец, вам не нужна оболочка bash -c
, потому что Docker автоматически предоставляет ее для линий CMD. Таким образом, вам остается только
CMD php interfacegps.php
Самый простой способ выполнить это - использовать опцию docker run -d
для запуска контейнера в фоновом режиме, а затем использовать docker logs
позже для просмотра журналов.
docker run --name interface-gps -d ... myimage
docker logs interface-gps
Если вы действительно хотите, вы можете запустить контейнер на переднем плане и захватить его вывод так же, как вы пытались в своей строке RUN.
nohup docker run --rm myimage >myscript.log 2>&1 &