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, как этот

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 flages из моей исходной команды запуска docker

Я работал с docker-compose, подобным этому

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

Может ли кто-нибудь указать мне правильное направление здесь?

ОБНОВЛЕНИЕ после первого ответа

Я попытался запустить docker-compose up -d

[email protected]:~/ubuntu# docker-compose up -d
Creating ABC
[email protected]:~/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
[email protected]:~/ubuntu#

Не знаю, почему его в статусе Exited

Любая идея?

Спасибо

Ответ 1

Вы должны прочесывать файл Compose docs.

Большинство команд запуска docker имеют эквивалент компоновки, и все они должны быть перечислены там.

Флажок -d запускается после запуска или вверх.

Флаг tty -t и интерактивный флаг -i не требуются, поскольку запуск docker-compose делает это по умолчанию. Вы можете добавить tty в отдельные контейнеры в файле компоновки с -t, но вы не можете использовать интерактивный режим, так как вы можете запускать сразу несколько контейнеров, и вы не можете взаимодействовать со всеми ними.

В отношении вашей ситуации команда, которую вы используете, должна работать. Если вы добавите -d после команды запуска, она будет работать в фоновом режиме. Но я рекомендую использовать вместо запуска, так как он просто запустит все контейнеры в файле, а не будет указывать hdinsight.

Ответ 2

Сегодня я столкнулся с той же проблемой, и ниже я понимаю, как я себя понимаю.

Я добавляю значение tty: true значение kay & stdin_open: true в файле docker-compose.yml, как показано ниже. Я уверен, что он будет работать в режиме отсоединения, а также можно взаимодействовать с консолью.

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