&安培;与docker exec一起使用时返回错误的pid

时间:2018-03-30 03:19:37

标签: bash docker command-line-interface hyperledger hyperledger-composer

我目前正在尝试使用nohup命令生成并杀死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> &

这将返回一个与其余服务器的进程ID相关的pid。

但是,如果我这样做,

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

其他服务器将启动,但是,返回的pid是其余服务器的pid。

为什么会这样?

PS:我需要pid以后杀死衍生的休息服务器。

1 个答案:

答案 0 :(得分:3)

在第二个命令中,结尾&docker exec本身上运行,而不是在容器内运行的进程上运行。

由于您已使用-d选项以分离模式运行容器,为什么还要将其余服务器放在后台呢?