docker-compose为分离模式

roy*_*roy 28 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
Run Code Online (Sandbox Code Playgroud)

这很复杂,所以我试图创建像这样的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"
Run Code Online (Sandbox Code Playgroud)

但我不知道该到哪里-d,-i-t从我原来的码头工人,运行命令flages

我正在运行像这样的码头组合

docker-compose -f docker-compose.yml run hdinsight
Run Code Online (Sandbox Code Playgroud)

任何人都可以指出我正确的方向吗?

第一次回答后更新

我试着跑 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#
Run Code Online (Sandbox Code Playgroud)

不知道为什么它的Exited地位

任何的想法 ?

谢谢

Nau*_*aun 18

您应该搜索Compose文件文档.

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

后的背景标志-d去跑步向上.

tty标志-t和交互标志-i不是必需的,因为docker-compose run 默认执行此操作.您可以使用-t在compose文件中将tty添加到单个容器中,但是您不能使用交互模式,因为您可以一次启动多个容器,并且无法与它们进行全部交互.

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


Ort*_*kni 15

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

version: "3"
services:
  alpine1:
    image: alpine
    tty: true
    stdin_open: true
Run Code Online (Sandbox Code Playgroud)

从...开始:

docker-compose up -d
Run Code Online (Sandbox Code Playgroud)

附加到容器:

docker attach 268bcfb650fb
Run Code Online (Sandbox Code Playgroud)

并与 分离^P^Q


she*_*ili 6

从文件

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.
Run Code Online (Sandbox Code Playgroud)

docker-compose up 文档

命令应该是

docker-compose up -d 
Run Code Online (Sandbox Code Playgroud)


Ana*_*har 5

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

我在下面的“ docker-compose.yml”文件中添加了tty:真正的 kay值 stdin_open:真正的键值,我确信它会以分离模式运行,并且还可以与控制台交互。

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
Run Code Online (Sandbox Code Playgroud)