【问题标题】:How to execute commands in docker container as part of bash shell script如何在 docker 容器中执行命令作为 bash shell 脚本的一部分
【发布时间】:2016-08-06 07:05:06
【问题描述】:

我想编写一个自动执行以下操作的 bash 脚本:

进入正在运行的容器

docker exec -it CONTAINER_NAME /bin/bash

执行一些命令:

cat /dev/null > /usr/local/tomcat/logs/app.log
exit

有问题的部分是在执行docker exec 时。新的 shell 已创建,但未执行其他命令。

有办法解决吗?

【问题讨论】:

    标签: bash shell docker


    【解决方案1】:

    您可以将heredocdocker exec 命令一起使用:

    docker exec -i CONTAINER_NAME bash <<'EOF'
    cat /dev/null > /usr/local/tomcat/logs/app.log
    exit
    EOF
    

    使用变量:

    logname='/usr/local/tomcat/logs/app.log'
    

    然后用作:

    docker exec -i CONTAINER_NAME bash <<EOF
    cat /dev/null > "$logname"
    exit
    EOF
    

    【讨论】:

    • 谢谢。这行得通。如何将参数从外部传递到heredoc?
    • 传递参数在第一行使用EOF而不是'EOF',然后在heredoc中使用变量
    • 对于那些想知道的人,我成功地让它与docker run 命令一起使用。
    • @ndmeiri 怎么样?我正在尝试使用docker run --detach-keys="ctrl-p" -it busybox,但我无法让它工作
    【解决方案2】:

    你可以简单地启动

    docker exec -it container_id cat /dev/null &gt; /usr/local/tomcat/logs/app.log

    【讨论】:

      猜你喜欢
      • 2020-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-16
      相关资源
      最近更新 更多