Python 使用docker将回显输入发送到stdin到docker容器
下面是我的示例c程序Python 使用docker将回显输入发送到stdin到docker容器,python,docker,dockerfile,docker-run,python-docker,Python,Docker,Dockerfile,Docker Run,Python Docker,下面是我的示例c程序 #include <stdio.h> int main() { int x, y, z; scanf("%d%d", &x, &y); printf("%d,%d" ,x,y); z = x + y; printf("%d", z); return 0; } 在pythonshell中,我尝试运行容器并传递参数,如图所示。得到结果,但x和y值
#include <stdio.h>
int main()
{
int x, y, z;
scanf("%d%d", &x, &y);
printf("%d,%d" ,x,y);
z = x + y;
printf("%d", z);
return 0;
}
在pythonshell中,我尝试运行容器并传递参数,如图所示。得到结果,但x和y值被视为一些随机数
>>> import docker
>>> client = docker.from_env()
>>> client.containers.run(image='sample_c',command='echo "1 2" | ',entrypoint='/opt/c_build_dir/c_executable')
b'21911,14414231201441445031'
>>> client.containers.run(image='sample_c',command='echo "1 2" | /opt/c_build_dir/c_executable')
b'1 2 | /opt/c_build_dir/c_executable\n'
如何使用python docker实现这一点???如果您的主容器进程使用任何shell功能(管道、重定向、环境变量扩展),您需要自己手动包含shell。bourneshell
sh-c
选项将运行单个内联命令
client.containers.run(
image='sample_c',
command=['sh', '-c', 'echo "1 2" | /opt/c_build_dir/c_executable']
)
命令
选项可以是字符串或列表;如果使用列表(推荐),则需要手动将命令拆分为单独的单词,但完成此操作后,无需进一步转义。它会引发什么错误?是否可以通过编辑(不在评论部分)向问题添加错误回溯?我的猜测是,这是因为您混淆了命令和入口点。尝试将entrypoint保留在外面,并设置命令='echo“12”| build/c_executable'
client.containers.run(
image='sample_c',
command=['sh', '-c', 'echo "1 2" | /opt/c_build_dir/c_executable']
)