gpt4 book ai didi

docker - 使用没有 docker exec 的附加将命令发送到正在运行的容器

转载 作者:行者123 更新时间:2023-12-02 18:27:32 27 4
gpt4 key购买 nike

我有一个在接受键入命令的 docker 容器中运行的循环进程。目前我必须使用 docker attach <container>然后输入我的命令,例如 restart在退出之前。

我不能用 docker exec据我所知,我想与之交互的进程已经在运行,所以无论如何我可以以编程方式将命令传递给 docker attach ?

编辑:这是正在运行的程序内部的命令,而不是 shell 中可用的命令

最佳答案

一个解决方案可能是使用类似的东西:

echo "your input here" | docker attach <your container>
但是...这要求不要使用 -t可能会给您带来其他问题的选项...

检查这个问题: Redirect stdin to docker attach Michael Crosby 提供了一个例子:

This issue has been resolved.

docker run -i busybox sh -c "while true; do cat /dev/stdin; sleep 1; done;"
test

# ... from another terminal
echo test | docker attach 27f04f3fd73a

这里需要注意的是 它不起作用 当您使用 --tty , -t (Allocate a pseudo-TTY) 运行容器时选项。我还没有完全理解为什么会这样,所以我不会试图解释它,有些东西已经写在这里: Confused about Docker -t option to Allocate a pseudo-TTY

另外,来自 docker run reference :

For interactive processes (like a shell), you must use -i -t together in order to allocate a tty for the container process. -i -t is often written -it as you’ll see in later examples.Specifying -t is forbidden when the client is receiving its standard input from a pipe, as in:

$ echo test | docker run -i busybox cat

关于docker - 使用没有 docker exec 的附加将命令发送到正在运行的容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58076070/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com