sql >> Base de Datos >  >> NoSQL >> MongoDB

Error de mongod del contenedor Docker al iniciar a través de ssh

El problema aquí es su enfoque. Docker no tiene un sistema de inicio como el que está acostumbrado en los sistemas tradicionales. Lo que hace Docker es reemplazar PID 1 con el proceso que especifique en el CMD o ENTRYPOINT Comandos de Dockerfile. Por ahora, ignora ENTRYPOINT , porque reemplaza lo que su CMD se ejecuta con (normalmente, es /bin/sh -c ). Debe indicarle a Docker que inicie su servicio mongod en su Dockerfile con el CMD comando, como:

CMD usr/bin/mongod

Y cuando ejecute su contenedor, mongod será su PID 1. Ahora, probablemente se esté preguntando en este punto "¿Pero qué pasa con mi servidor SSH?" y la respuesta es:no ejecute un servidor SSH en sus contenedores docker. Hay son algunos casos de uso en los que está bien ejecutar un servidor SSH, pero casi todas las razones "normales" (depuración, C&C, etc.) se anulan con la "mejor práctica" para obtener un shell en su contenedor:

docker exec -it myContainer /bin/bash

Esto lo colocará en un caparazón en su contenedor en ejecución. La recomendación aquí para administrar la configuración y los cambios en su contenedor docker es usar algo como Ansible. Sin embargo, recuerde que los contenedores acoplables son efímeros y no debe reiniciar los servicios y cambiar el estado de configuración en ellos. Si necesita un cambio de configuración, cambie el Dockerfile o los datos de configuración y luego inicie un nuevo contenedor. ¡Buena suerte! Aquí hay un poco más de información sobre Dockerizing MongoDB, pero tenga en cuenta que el método descrito allí altera el ENTRYPOINT en Dockerfile, que es un poco más complicado y requiere una mejor comprensión de lo que sucede en Dockerfiles.