MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Erreur mongod du conteneur Docker lors du démarrage via ssh

Le problème ici est votre approche. Docker n'a pas de système d'initialisation comme vous en avez l'habitude sur les systèmes traditionnels. Ce que fait docker est de remplacer PID 1 avec le processus que vous spécifiez dans le CMD ou ENTRYPOINT Commandes Dockerfile. Pour l'instant, ignorez ENTRYPOINT , car il remplace ce que votre CMD est exécuté avec (normalement, c'est /bin/sh -c ). Vous devez demander à docker de démarrer votre service mongod dans votre Dockerfile avec le CMD commande, comme :

CMD usr/bin/mongod

Et lorsque vous exécutez votre conteneur, mongod sera votre PID 1. Maintenant, vous vous demandez probablement à ce stade "Mais qu'en est-il de mon serveur SSH?" et la réponse est :n'exécutez pas de serveur SSH sur vos conteneurs Docker. Il y a certains cas d'utilisation où l'exécution d'un serveur SSH est acceptable, mais presque toutes les raisons "normales" (débogage, C&C, etc.) sont annulées avec la "meilleure pratique" pour obtenir un shell sur votre conteneur :

docker exec -it myContainer /bin/bash

Cela vous déposera dans un shell sur votre conteneur en cours d'exécution. La recommandation ici pour gérer la configuration et les modifications dans votre conteneur Docker est d'utiliser quelque chose comme Ansible. Cependant, n'oubliez pas que les conteneurs Docker sont éphémères et que vous ne devriez pas redémarrer les services et modifier leur état de configuration. Si vous avez besoin d'un changement de configuration, modifiez le Dockerfile ou les données de configuration, puis démarrez un nouveau conteneur. Bonne chance! Ici est un peu plus d'informations sur Dockerizing MongoDB, mais gardez à l'esprit que la méthode décrite ici modifie le ENTRYPOINT dans le Dockerfile, qui est un peu plus complexe et nécessite une meilleure compréhension de ce qui se passe dans Dockerfiles.