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.