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