docker-compose 之 tty

好风 发表于 2016-12-15T13:24:59.716951Z
引用地址:https://plus.ooclab.com/note/article/1322

使用 docker 开发过程中,经常需要运行一个交互界面。使用 docker 命令行程序,可以这样启动容器:

$ docker run -it ubuntu bash

其中的 -t 选项就是启用 tty 特性。

我们使用 docker-compose 时,情况也是如此。

举例,我们有 docker-compose.yml 如下:

version: '2'
services:
    mydev:
        image: python

后台启动该 service :

$ docker-compose up -d
Creating network "2_default" with the default driver
Creating 2_mydev_1
$ docker-compose ps
  Name      Command   State    Ports 
------------------------------------
2_mydev_1   python3   Exit 0         

我们发现,上面的容器自动退出了。

这是因为:docker-compose 也需要启用 tty 特性,才可以保证容器后台运行不退出。

现在我们修改 docker-compose.yml 如下:

version: '2'
services:
    mydev:
        image: python
        tty: true

再次启动该 service :

$ docker-compose up -d
Creating network "2_default" with the default driver
Creating 2_mydev_1
$ docker-compose ps
  Name      Command   State   Ports 
-----------------------------------
2_mydev_1   python3   Up            

现在所有容器正常运行于后台了。