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
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.
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
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
.
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.
la commande devrait être
docker-compose up -d