这个问题没有重复,因为我想获得一个交互式shell而不使用-it标志运行。
我正在向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
m我看到了我的图片
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 flags 。
我怎么能意识到这一点?
答案 0 :(得分:3)
bash
将无法运行 。如果您未提供-i
标记,bash
将立即退出。所以当你...
docker run environment:full
... bash立即退出,因此您的容器退出。如果您运行docker ps -a
,您会看到它,它显示已停止的容器。
bash
将不会为您提供交互式提示。所以,如果你要跑...
coerk run -i environment:full
...你会得到一个bash
shell,但没有提示,作业控制或其他功能。您需要为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
。