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 há 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.