web-dev-qa-db-fra.com

docker-composer pour le mode détaché

J'ai la commande suivante de docker pour exécuter le conteneur 

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

C'était trop compliqué alors j'essayais de créer un fichier docker-composé comme celui-ci

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"

Mais je ne sais pas où passer les -d, -i & -t à partir de ma commande d'origine du docker

Je courais docker-compose comme ça 

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

quelqu'un peut-il m'indiquer la bonne direction ici?

UPDATE après la première réponse 

J'ai essayé d'exécuter 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#

Je ne sais pas pourquoi son statut est Exited

Une idée ?

Merci

17
roy

Vous devriez parcourir le fichier Compose docs .

La plupart des commandes docker run ont un équivalent de composition et elles devraient toutes y être répertoriées.

Le drapeau d'arrière-plan -d va après run ou up.

L'indicateur tty -t et l'indicateur interactif -i ne sont pas obligatoires car docker-compose run le fait par défaut . Vous pouvez ajouter des conteneurs à des conteneurs individuels dans le fichier de composition avec -t, mais vous ne pouvez pas utiliser le mode interactif car vous pouvez démarrer plusieurs conteneurs à la fois et vous ne pouvez pas interagir avec tous.

En ce qui concerne votre situation, la commande que vous utilisez devrait fonctionner. Si vous ajoutez -d après la commande d'exécution, il sera exécuté en arrière-plan. Mais je vous recommande d'utiliser up au lieu de run, car il lancera simplement tous les conteneurs du fichier plutôt que de spécifier hdinsight.

14
Nauraushaun

Aujourd'hui, je suis confronté au même problème et voici comment je me débrouille.

J'ajoute tty: true valeur de kay & stdin_open: true valeur de la clé dans le fichier 'docker-compose.yml' comme ci-dessous et je suis sûr qu'il fonctionnera en mode détaché et que l'on peut également interagir avec la console.

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
4
Anand Suthar

Comme l'a dit Anand Suthar, vous devez utiliser tty: true et stdin_open: true. Voici un exemple minimal:

version: "3"
services:
  Alpine1:
    image: Alpine
    tty: true
    stdin_open: true

Commencer avec:

docker-compose up -d

Attacher à un conteneur avec:

docker attach 268bcfb650fb

et détachez avec ^P^Q.

1
Ortomala Lokni

Du document 

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

la commande devrait être 

docker-compose up -d 
0
Sh-L Li