MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Errore mongod del contenitore Docker all'avvio tramite ssh

Il problema qui è il tuo approccio. Docker non ha un sistema init come sei abituato sui sistemi tradizionali. Quello che fa la finestra mobile è sostituire PID 1 con il processo specificato in CMD o ENTRYPOINT Comandi Dockerfile. Per ora, ignora ENTRYPOINT , perché sostituisce quello che è il tuo CMD viene eseguito con (normalmente, è /bin/sh -c ). Devi indicare a Docker di avviare il tuo servizio mongod nel tuo Dockerfile con il CMD comando, come:

CMD usr/bin/mongod

E quando esegui il tuo container, mongod sarà il tuo PID 1. Ora, probabilmente ti starai chiedendo a questo punto "Ma che dire del mio server SSH?" e la risposta è:non eseguire un server SSH sui contenitori docker. Ci ci sono alcuni casi d'uso in cui l'esecuzione di un server SSH va bene, ma quasi tutti i motivi "normali" (debug, C&C, ecc.) sono annullati con la "migliore pratica" per ottenere una shell sul tuo contenitore:

docker exec -it myContainer /bin/bash

Questo ti farà cadere in una shell sul tuo contenitore in esecuzione. Il consiglio qui per la gestione della configurazione e delle modifiche nel contenitore della finestra mobile è di utilizzare qualcosa come Ansible. Tuttavia, ricorda che i contenitori Docker sono temporanei e non dovresti riavviare i servizi e modificare lo stato di configurazione su di essi. Se hai bisogno di una modifica alla configurazione, cambia il Dockerfile o i dati di configurazione, quindi avvia un nuovo contenitore. Buona fortuna! Qui è un po' più di informazioni su Dockerizing MongoDB, ma tieni presente che il metodo qui descritto altera il ENTRYPOINT nel Dockerfile, che è un po' più complicato e richiede una migliore comprensione di cosa sta succedendo in Dockerfiles.