& returns 与 docker exec 一起使用时不正确的 pid

& returns incorrect pid when used with docker exec

我目前正在尝试使用 nohup 命令生成和终止 hyperledger composer rest 服务器实例。

为了生成新的 hyperledger composer rest 服务器实例,我需要在 docker cli 容器中执行此类命令。 我现在是这样做的:

# start an interactive terminal with cli container
docker exec -it cli bash

# start rest server with defined port number
nohup composer-rest-server -c <myCard> -p <myPort> &

这将为我 return 一个与其余服务器的进程 ID 相关的 pid。

但是,如果我这样做,

# run a process that is detached to start the rest server
docker exec -d cli composer-rest-server -c <myCard> -p <myPort> & 

rest 服务器将启动,但是,returned 的 pid 是不是rest 服务器的 pid。

为什么会这样?

PS: 我需要 pid 来稍后杀死生成的其余服务器。

在你的第二个命令中,结尾 & 作用于 docker exec 本身,而不作用于容器内的进程 运行ning。

既然你有 运行 带有 -d 选项的分离模式的容器,为什么还要将其余服务器置于后台?