MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Erro mongod do contêiner Docker ao iniciar via ssh


O problema aqui é a sua abordagem. O Docker não possui um sistema de inicialização como você está acostumado em sistemas tradicionais. O que o docker faz é substituir PID 1 com o processo especificado no CMD ou ENTRYPOINT Comandos do Dockerfile. Por enquanto, ignore ENTRYPOINT , porque substitui o que seu CMD é executado com (normalmente, é /bin/sh -c ). Você precisa instruir o docker a iniciar seu serviço mongod em seu Dockerfile com o CMD comando, como:

CMD usr/bin/mongod

E quando você executar seu contêiner, mongod será seu PID 1. Agora, você provavelmente está se perguntando neste momento "Mas e o meu servidor SSH?" e a resposta é:não execute um servidor SSH em seus contêineres docker. Existem alguns casos de uso em que a execução de um servidor SSH é aceitável, mas quase todos os motivos "normais" (depuração, C&C etc.) são anulados com a "prática recomendada" para obter um shell em seu contêiner:

docker exec -it myContainer /bin/bash

Isso o colocará em um shell em seu contêiner em execução. A recomendação aqui para gerenciar a configuração e as alterações em seu contêiner docker é usar algo como o Ansible. No entanto, lembre-se de que os contêineres do docker são efêmeros e você não deve reiniciar serviços e alterar o estado de configuração deles. Se você precisar de uma alteração de configuração, altere o Dockerfile ou os dados de configuração e inicie um novo contêiner. Boa sorte! Aqui é um pouco mais de informação sobre Dockerizing MongoDB, mas tenha em mente que o método descrito altera o ENTRYPOINT no Dockerfile, que é um pouco mais complicado e requer uma melhor compreensão do que está acontecendo no Dockerfiles.