Как убить Docker-контейнер, созданный `spawn` в nodejs? - PullRequest
0 голосов
/ 26 апреля 2018

Я использую child_process.spawn для запуска док-контейнера, как показано ниже:

const docker = spawn('docker', ['run', '-it', '--rm', 'DOCKER_IMAGE', 'bash'])

Интересно, как я могу остановить процесс.Я попробовал описанный ниже метод, но он не останавливает контейнер:

docker.kill()

он отлично работает с другими обычными командами процесса, но докер может отличаться.У кого-нибудь есть идеи о том, как этого добиться?

Я знаю, что правильный способ остановить Docker-контейнер - это запустить команду docker stop.Но как узнать идентификатор контейнера из приведенного выше кода?

1 Ответ

0 голосов
/ 26 апреля 2018

<ChildProcess>.kill() не завершает процесс, он просто отправляет сигнал 'SIGTERM' по умолчанию.Таким образом, docker.kill() отправляет 'SIGTERM' клиентскому процессу Docker, который затем сталкивается с этой проблемой Остановите работающий Docker-контейнер, отправив SIGTERM короткая история bash не init, и будет игнорировать сигнал.

Вам нужно будет выполнить команду 'docker stop'.

В качестве альтернативы вы можете пропустить оболочку для клиента Docker и напрямую использовать API докера https://github.com/apocas/dockerode

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...