docker-compose for Detached mode

时间:2016-06-28 21:17:12

标签: docker docker-compose

我有以下docker命令来运行容器

docker run -d --name test -v /etc/hadoop/conf:/etc/hadoop/conf -v /usr/lib/python2.7/dist-packages/hdinsight_common:/usr/lib/python2.7/dist-packages/hdinsight_common -v /etc/hive/conf/:/etc/hive/conf/ -v /etc/tez/conf/:/etc/tez/conf/ -v /usr/hdp/2.4.2.0-258/sqoop/lib/:/usr/hdp/2.4.2.0-258/sqoop/lib/ -i -t hdinsight /bin/bash

这很复杂,所以我试图像这样创建docker-compose文件

version: '2'
services:
  hdinsight:
    image: hdinsight
    container_name: ABC
    volumes:
     - /etc/hadoop/conf:/etc/hadoop/conf
     - /usr/lib/python2.7/dist-packages/hdinsight_common:/usr/lib/python2.7/dist-packages/hdinsight_common
     - /etc/hive/conf/:/etc/hive/conf/
     - /etc/tez/conf/:/etc/tez/conf/
     - /usr/hdp/2.4.2.0-258/sqoop/lib/:/usr/hdp/2.4.2.0-258/sqoop/lib/
    entrypoint:
     - bash
    labels:
     - "HDInsight client VM"

但我不知道在哪里通过-d-i& -t来自原始的docker run命令

我正在像这样运行docker-compose

docker-compose -f docker-compose.yml run hdinsight

有人能指出我正确的方向吗?

第一次回答后更新

我试图运行docker-compose up -d

root@abc-docker:~/ubuntu# docker-compose up -d
Creating ABC
root@sbd-docker:~/ubuntu# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
ffa4c359abf7        hdinsight           "/bin/bash"         5 seconds ago       Exited (0) 5 seconds ago                       ABC
root@sbd-docker:~/ubuntu#

不知道为什么它处于Exited状态

有什么想法吗?

由于

4 个答案:

答案 0 :(得分:16)

您应该搜索撰写文件docs

大多数 docker run 命令都有一个compose等价物,它们都应该列在那里。

背景标志-d在运行向上之后。

tty标志-t和交互式标志-i不需要docker-compose run does this by default。您可以使用-t在compose文件中将tty添加到单个容器中,但是您不能使用交互模式,因为您可以一次启动多个容器而不能与它们进行全部交互。

关于你的情况,你正在使用的命令应该正常工作。如果在运行命令后添加-d,它将在后台运行。但我建议使用 up 而不是 run ,因为它只是启动文件中的所有容器,而不是必须指定hdinsight。

答案 1 :(得分:5)

今天我面临同样的问题,下面是我的管理方式。

  

我在'docker-compose.yml'文件中添加 tty:true kay值& stdin_open:true 键值,如下所示我确信它将以分离模式运行,并且还可以与控制台进行交互。

version: '2'
services:
hdinsight:
image: hdinsight
container_name: ABC
volumes:
 - /etc/hadoop/conf:/etc/hadoop/conf
 - /usr/lib/python2.7/dist-packages/hdinsight_common:/usr/lib/python2.7/dist-packages/hdinsight_common
 - /etc/hive/conf/:/etc/hive/conf/
 - /etc/tez/conf/:/etc/tez/conf/
 - /usr/hdp/2.4.2.0-258/sqoop/lib/:/usr/hdp/2.4.2.0-258/sqoop/lib/
entrypoint:
 - bash
labels:
 - "HDInsight client VM"
tty: true
stdin_open: true

答案 2 :(得分:2)

正如Anand Suthar所说,您必须使用tty: truestdin_open: true。这是一个最小的示例:

version: "3"
services:
  alpine1:
    image: alpine
    tty: true
    stdin_open: true

开始于:

docker-compose up -d

使用以下方法附加到容器上:

docker attach 268bcfb650fb

并使用^P^Q分离。

答案 3 :(得分:1)

来自文档

Usage: up [options] [--scale SERVICE=NUM...] [SERVICE...]

Options:
    -d, --detach               Detached mode: Run containers in the background,
                               print new container names. Incompatible with
                               --abort-on-container-exit.

docker-compose up doc

命令应为

docker-compose up -d