【发布时间】: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 脚本:
进入正在运行的容器
docker exec -it CONTAINER_NAME /bin/bash
执行一些命令:
cat /dev/null > /usr/local/tomcat/logs/app.log
exit
有问题的部分是在执行docker exec 时。新的 shell 已创建,但未执行其他命令。
有办法解决吗?
【问题讨论】:
您可以将heredoc 与docker 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
【讨论】:
EOF而不是'EOF',然后在heredoc中使用变量
docker run 命令一起使用。
docker run --detach-keys="ctrl-p" -it busybox,但我无法让它工作
你可以简单地启动
docker exec -it container_id cat /dev/null > /usr/local/tomcat/logs/app.log
【讨论】: