Windows下执行winpty docker run命令为何需移除/bin/sh?
故障根因说明
- 第一条执行失败的命令存在参数分隔错误:命令中镜像名
hpjn/doc-training:1.0和后续要执行的/bin/sh之间没有加空格,Docker解析时会将整段hpjn/doc-training:1.0/bin/sh识别为目标镜像名称,本地和远程仓库均不存在该名称的镜像,自然无法正常启动。 - 命令中写的
--r属于非法Docker启动参数,启动交互式容器需要传入-it参数(分别对应保持标准输入开启、分配伪终端两个配置),第二条命令能正常运行,说明实际执行时已经正确传入了交互参数,或是本地配置了Docker别名默认携带交互参数。 - Docker run 命令如果不在镜像名后指定额外启动命令,会自动读取镜像构建时通过
CMD/ENTRYPOINT指令预设的启动命令。hpjn/doc-training:1.0镜像的预设启动命令本身就是交互式Shell环境,因此不需要额外追加/bin/sh就能直接进入交互界面,完成应用安装状态检查。 - 补充说明:第二条命令末尾的斜杠属于冗余字符,Docker解析镜像名时会自动忽略尾部斜杠,不影响镜像识别。整个问题和winpty工具无关,winpty仅负责Windows控制台与类Unix终端的适配,不会改动Docker命令的参数解析逻辑。
如果需要手动指定启动/bin/sh进入容器,正确命令格式为:winpty docker run -it hpjn/doc-training:1.0 /bin/sh
注意镜像名和/bin/sh之间必须保留空格分隔。
内容的提问来源于stack exchange,提问作者JnooriRS
相关产品推荐
相关产品推荐

