使用Docker Python SDK创建容器立即退出无日志,该如何解决?
错误原因
命令行执行docker run时使用了-it参数,该参数的作用是分配伪终端、开启标准输入交互,但你调用Docker Python SDK的containers.run方法时未传入对应配置。
你使用的Ubuntu类镜像默认启动命令为bash,当没有伪终端支持、也没有前台常驻任务执行时,bash进程会直接终止,导致容器随之退出,因此不会生成错误日志。
解决方法
有两种可选方案,可根据使用场景选择:
方案1:开启伪终端和交互模式(和命令行-it效果完全一致)
调用containers.run时新增tty和stdin_open参数:
client.containers.run( image='ubuntu-18_04-cee_st_tools_docker_img-3_6', name="myCont", detach=True, tty=True, # 对应命令行`-t`参数,分配伪终端 stdin_open=True # 对应命令行`-i`参数,开启标准输入交互 )
方案2:指定前台常驻启动命令
如果不需要和容器交互,可直接指定一个长期运行的前台命令,也能保持容器运行:
client.containers.run( image='ubuntu-18_04-cee_st_tools_docker_img-3_6', name="myCont", detach=True, command=["sleep", "infinity"] # 前台执行sleep命令,长期运行 )
内容的提问来源于stack exchange,提问作者Robert Balogh
相关产品推荐
相关产品推荐

