我正在迈入Docker的第一步,以创建仅供内部使用的镜像。

我从这个envirornment_full.df开始:

FROM ubuntu:16.04
ENTRYPOINT ["/bin/bash"]

然后我建立
docker rmi environment:full
docker build -t environment:full  -f environment.df .

然后跑
docker run environment:full

运行docker images -a我看到我的图像
REPOSITORY          TAG                 IMAGE ID            CREATED         SIZE
environment         full                aa91bbd39167        4 seconds ago   129 MB

所以我运行它
docker run environment:full

我什么也没发生....
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED         STATUS                      PORTS               NAMES
5847c0a18f30        environment:full    "/bin/bash"         21 seconds ago  Exited (0) 20 seconds ago                       admiring_mirzakhani


$ docker run environment:full -ti
bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash: no job control in this shell
root@aa768a585f33:/# exit

我想要ubuntu提示,就像我在SSH连接中一样。而没有用户的情况下,必须输入-i或-tty标志。

我怎么能意识到这一点?

最佳答案

如果关闭stdin,则bash根本不会运行。如果您不提供-i标志,那么bash只会立即退出。所以当你...

docker run environment:full

... bash立即退出,因此您的容器退出了。如果您运行docker ps -a,就会看到它,它显示了已停止的容器。

如果未附加到tty,则bash不会为您提供交互式提示。所以如果你要跑步...
coerk run -i environment:full

...您将得到一个bash shell,但没有提示,作业控制或其他功能。您需要为Docker提供-t来分配tty设备。

如果不在命令行上同时提供-i-t选项,您将无法获得想要的东西。

一种替代方法是设置一个运行ssh守护程序的镜像,并让人们将ssh放入容器中。实际上,它不是一个ssh session ,而是表现为“就像我在SSH连接中一样”。

另外,请注意:
docker run environment:full -ti

与此不同:
docker run -it environment:full

前者将在容器内运行bash -ti,而后者将-i-t选项传递给docker run

关于bash - DockerFile:启动后如何获取bash命令行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41715801/

10-12 14:15
查看更多