我有以下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
状态
有什么想法吗?
由于
答案 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: true
和stdin_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 -d