Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何将STDIN发送到docker进程_Linux_Docker_Containers - Fatal编程技术网

Linux 如何将STDIN发送到docker进程

Linux 如何将STDIN发送到docker进程,linux,docker,containers,Linux,Docker,Containers,我有一个nodemon在开发中的docker容器中运行。我已成功设置了代码更改时的实时重新加载 然而,有时我会在nodemon崩溃的地方编写一些代码。当您键入“rs”(在本地运行时)时,可以手动重新启动Nodemon 问题是,在docker容器中,我无法让它重新启动 我尝试了以下方法,但没有成功: docker exec-它添加92J rs=>找不到rs docker exec-it add92j sh-c echo rs=>只需echo rs 我还尝试了docker-attach,然后键入rs

我有一个nodemon在开发中的docker容器中运行。我已成功设置了代码更改时的实时重新加载

然而,有时我会在nodemon崩溃的地方编写一些代码。当您键入“rs”(在本地运行时)时,可以手动重新启动Nodemon

问题是,在docker容器中,我无法让它重新启动

我尝试了以下方法,但没有成功:

docker exec-它添加92J rs
=>找不到rs

docker exec-it add92j sh-c echo rs
=>只需echo rs

我还尝试了
docker-attach
,然后键入rs,但没有效果

我还尝试将shell与
docker exec-it sh
一起使用,使用
ps aux
获取流程,然后:

echo-rs>/proc/PID/fd/0

但这也不起作用。(请注意,我已使用rs和rs\n并使用printf和echo尝试了上述所有变体)

在nodemon github中,我看到它寻找“rs\n”来触发重新启动,并且有一个对
SIGUSR2
的引用。因此,我也尝试了
kill-12pid
,但这只会终止我的进程。注意,我检查了一下,看看12在我的容器中确实是
SIGUSR2

使用
ps aux
在我的容器中实际运行的进程是:

 1 root       0:00 npm
14 root       0:00 sh -c DEBUG=app:* nodemon
15 root       0:00 node /workspace/node_modules/.bin/nodemon
29 root       0:00 sh -c node server/register.js
30 root       0:01 node server/register.js

因此,我的问题是,如何将文本发送到stdin以用于docker中的进程?

运行带有stdin的
-t
tty和
-I
的nodemon容器允许您在
docker附加后控制
nodemon

→ CID=$(docker run -dti dply/node-docker-demo-app:nodemon)
→ docker attach $CID
rs
[nodemon] starting `node /app/index.js`
Listening on 8080
^Csigint

那么
echo rs | docker exec-it add92j
呢?您是否使用
-ti
选项为nodemon运行初始
docker运行
?在尝试
docker attach
之前,这个建议与
docker attach
一起帮助我解决了容器启动后没有显示
stdin
交互的情况