DockerFile:启动后如何获得bash命令行?

这个问题不重复,因为我想获得一个交互式shell而不用-it标志运行。

我正在向Docker迈出第一步来创build仅用于内部使用的图像。

我从这个envirornment_full.df开始:

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

我然后build立

 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连接。 而这个没有用户必须input-i或-tty标志

我怎么能意识到这一点?

如果标准inputclosures, bash将不会运行。 如果你不提供-i标志, bash将立即退出。 所以当你…

 docker run environment:full 

… bash立即退出,所以你的容器退出。 你会看到它,如果你运行docker ps -a ,它显示已经停止的容器。

如果没有连接到tty, bash不会给你一个交互提示。 所以,如果你要跑…

 coerk run -i environment:full 

…你会得到一个bashshell,但没有提示,工作控制,或其他function。 您需要为Docker提供-t来分配一个tty设备。

如果不在命令行中同时提供-i-t选项,则无法获得所需内容。

另一种方法是设置一个运行ssh守护进程的映像,并将人员ssh放入容器中。 而不是像“如果我在SSH连接”那样行事,它实际上是一个ssh会话。

另外请注意这一点:

 docker run environment:full -ti 

这不一样:

 docker run -it environment:full 

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