启动Docker容器并进入Shell时报错的问题求助
启动Docker容器并进入Shell时报错的问题求助
我来帮你梳理下这个问题的原因和解决办法:
先搞懂报错的根源
你用的命令docker start -i <Container name> sh存在使用误区——docker start的核心作用是启动已经创建好的容器,它的参数只能是容器名称或ID,你后面追加的sh会被Docker误判为另一个容器的名称,所以才会弹出“you cannot start and attach multiple containers at once”(不能同时启动并连接多个容器)的错误提示。
另外你的容器是控制台应用,启动后会直接占用前台终端运行程序,这也导致你没法直接输入命令。
给你几个可行的解决办法
办法1:先启动容器,再进入交互式Shell
如果容器已经存在,先启动它:
docker start <Container name>
然后用docker exec命令在运行中的容器里启动一个交互式Shell:
docker exec -it <Container name> sh
这里的-it是关键参数:-i保持标准输入打开,-t分配一个伪终端,这样就能正常输入命令了。
办法2:直接启动容器并进入Shell(适用于未创建容器的场景)
如果你的容器还没创建,直接用docker run命令一步到位启动并进入交互式Shell:
docker run -it <你的镜像名称> sh
这个命令会直接基于镜像创建并启动容器,同时进入Shell,不会出现控制台程序占住终端的问题。
办法3:后台启动容器后再进入Shell
如果不想让容器的控制台程序占用前台,可以先后台启动容器:
docker start -d <Container name>
-d参数让容器在后台运行,之后再用docker exec -it <Container name> sh进入Shell即可。
备注:内容来源于stack exchange,提问作者mamad2559
相关产品推荐
相关产品推荐

