Tady je problém ve vašem přístupu. Docker nemá init systém, na jaký jste zvyklí na tradičních systémech. Docker dělá nahradit PID 1 s procesem, který zadáte v CMD
nebo ENTRYPOINT
Příkazy Dockerfile. Prozatím ignorujte ENTRYPOINT
, protože nahrazuje to, co vaše CMD
se spouští s (normálně je to /bin/sh -c
). Potřebujete instruovat docker, aby spustil vaši službu mongod ve vašem Dockerfile pomocí CMD
příkaz, jako:
CMD usr/bin/mongod
A když spustíte svůj kontejner, mongod bude vaším PID 1. Nyní se pravděpodobně v tuto chvíli ptáte:"Ale co můj SSH server?" a odpověď zní:Nespouštějte server SSH na kontejnerech dokovacích stanic. jsou některé případy použití, kdy je spuštění serveru SSH v pořádku, ale téměř všechny "normální" důvody (ladění, C&C atd.) jsou zrušeny "nejlepším postupem" pro získání shellu na vašem kontejneru:
docker exec -it myContainer /bin/bash
Tím se dostanete do ulity na běžícím kontejneru. Zde je doporučení pro správu konfigurace a změn ve vašem kontejneru dockeru použít něco jako Ansible. Pamatujte však, že kontejnery dockerů jsou pomíjivé a neměli byste restartovat služby a měnit na nich stav konfigurace. Pokud potřebujete změnu konfigurace, změňte Dockerfile nebo konfigurační data a poté spusťte nový kontejner. Hodně štěstí! Zde
je trochu více informací o Dockerizing MongoDB, ale mějte na paměti, že zde popsaná metoda mění ENTRYPOINT
v Dockerfile, který je trochu více zapojený a vyžaduje lepší pochopení toho, co se děje v Dockerfiles.