【发布时间】:2016-02-26 18:42:38
【问题描述】:
我正在通过 bash 脚本动态创建 docker 容器:
while getopts ":s:d:h" opt; do
case $opt in
s)
for i in $(seq $2 $END);
do
docker run -dit --name=app_client_$i -d app:client
docker exec -d app_client_$i $app_start
done
;;
...
docker 容器启动正常,但是docker exec 命令导致了问题。当我尝试时(没有-d):
docker exec app_client_$i $app_start
docker 容器内的应用程序启动正常 - 但我已连接到此 docker 容器。我想在后台启动docker容器内的应用,所以我使用-d参数:
docker exec -d app_client_$i $app_start
这样,应用程序就不会在 docker 容器内启动。我错过了什么?
【问题讨论】:
-
你从 docker logs app_client_$i 中得到了什么?
-
我已经试过了。我从日志中一无所获。如果我输入
docker logs app_client_$1则没有输出。 -
$app_start的值是使用 java 解释器的 java 调用。 -
docker run -itd中的奇怪东西应该是守护进程或交互式的,但不能两者兼而有之,docker exec不应与 -d 一起使用,请参阅您想要的主管、runit、daemontools 或 s6在一个容器中启动多个进程 -
好的,在运行命令中不带
-i参数的情况下进行了尝试,并使用"app_client_$i" "$app_start"等引用变量进行了尝试。两者都不起作用。