【问题标题】:Docker exec in bash scriptbash脚本中的Docker exec
【发布时间】: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" 等引用变量进行了尝试。两者都不起作用。

标签: bash docker


【解决方案1】:

好的,知道了(捂脸):

使用docker -d,您将在后台的容器内启动进程。所以我的应用程序已经在容器内运行,但在后台运行。

干杯!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-15
    • 2021-01-04
    • 2015-02-23
    • 2015-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多