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
…你会得到一个bash
shell,但没有提示,工作控制,或其他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
。