在Windows10主机(DockerVersion19.03.13,build 4484c46d9d )上,我尝试使用所有可能的--tty、--interactive和--detach组合运行一个坞映像,但它们都没有给我带来bash提示,总是立即退出。/bin/bash出现在图像中。Dockerfile来自https://hub.docker.com/r/astj/centos5-vault/dockerfile
我在docker run <switches> astj/centos5-vault /bin/bash中使用了完整的-t、-i、-d组合,即:-d、-i、-t、-it、-id、-td、-dit。
在任何情况下,容器都会立即退出。如果我将/bin/bash更改为ls,则可以看到目录列表。但当然,容器会像预期的那样立即退出。为了排除故障,我使用以下命令进行了实验,结果如下:
+-------------------------------------------------------+----------------------------------------------------------------+
| Command | Output |
+-------------------------------------------------------+----------------------------------------------------------------+
| docker run astj/centos5-vault /bin/bash | None. Exits. |
| docker run -i astj/centos5-vault /bin/bash | None. Exits. |
| docker run -it astj/centos5-vault /bin/bash | None. Exits. |
| docker run -t astj/centos5-vault /bin/bash | None. Exits. |
| docker run -td astj/centos5-vault /bin/bash | Prints a container hash, then exits |
| docker run -id astj/centos5-vault /bin/bash | Prints a container hash, then exits |
| docker run -d astj/centos5-vault /bin/bash | Prints a container hash, then exits |
| docker run -dit astj/centos5-vault /bin/bash | Prints a container hash, then exits |
| docker run -it astj/centos5-vault ls -la /bin/bash | "-rwxr-xr-x 1 root root 768664 Jul 10 2013 /bin/bash". Exits. |
| docker run -it astj/centos5-vault /bin/bash --version | None. Exits. |
| docker run -it astj/centos5-vault /bin/bash --login | None. Exits. |
| docker run -it astj/centos5-vault /bin/uname -r | "4.19.128-microsoft-standard". Exits. |
| docker run astj/centos5-vault whoami | "root". Exits. |
+-------------------------------------------------------+----------------------------------------------------------------+我试着排除故障,但是docker logs <container>没有显示一行日志。
有谁知道为什么/bin/bash命令仍然导致容器立即退出而不是带我到bash提示符呢?
发布于 2022-01-14 00:44:01
我也碰到了上面的问题,好像上面的用户也分别发布了这个问题,并在那里找到了一个答案:https://forums.docker.com/t/docker-run-exits-immediately-despite-detach-interactive-tty-and-providing-a-command/99444/5。
对于以后在这里找到出路的人来说,在我前面提到的配置中,
是一个特定于Windows环境的问题,通过对Windows10Build 18995的更改解决了这个问题。
解决问题的步骤:
创建文件:%userprofile%.wslconfig添加这两行: wsl2 kernelCommandLine = vsyscall=emulate重新启动wsl关机重新启动码头桌面
我在这里找到了答案:https://github.com/microsoft/WSL/issues/4694#issuecomment-556152512 (启用内核配置中的vsyscall=emulate来运行较旧的基本映像,如Centos 6)
这对我有效,它似乎只影响某些分布,对我来说也是centos 6。
https://stackoverflow.com/questions/64227769
复制相似问题