sql >> Database >  >> NoSQL >> MongoDB

Docker container mongod-fout bij starten via ssh

Het probleem hier is uw aanpak. Docker heeft geen init systeem zoals je gewend bent op traditionele systemen. Wat docker doet is vervangen PID 1 met het proces dat u opgeeft in de CMD of ENTRYPOINT Dockerfile-opdrachten. Negeer voorlopig ENTRYPOINT , omdat het vervangt wat uw CMD wordt uitgevoerd met (normaal gesproken is het /bin/sh -c ). U moet docker instrueren om uw mongod-service in uw Docker-bestand te starten met de CMD commando, zoals:

CMD usr/bin/mongod

En wanneer je je container uitvoert, zal mongod je PID 1 zijn. Nu vraag je je waarschijnlijk af:"Maar hoe zit het met mijn SSH-server?" en het antwoord is:voer geen SSH-server uit op uw docker-containers. Er zijn zijn sommige gevallen waarin het draaien van een SSH-server oké is, maar bijna alle "normale" redenen (debug, C&C, enz.) worden teniet gedaan met de "best practice" om een ​​shell op uw container te krijgen:

docker exec -it myContainer /bin/bash

Dit zal je in een schelp op je lopende container laten vallen. De aanbeveling hier voor het beheren van configuratie en wijzigingen in uw docker-container is om zoiets als Ansible te gebruiken. Onthoud echter dat docker-containers kortstondig zijn en dat u services niet opnieuw moet opstarten en de configuratiestatus ervan moet wijzigen. Als u een configuratiewijziging nodig hebt, wijzigt u de Dockerfile- of configuratiegegevens en start u een nieuwe container. Veel geluk! Hier is wat meer informatie over Dockerizing MongoDB, maar houd er rekening mee dat de daar beschreven methode het ENTRYPOINT verandert in de Dockerfile, die iets ingewikkelder is en een beter begrip vereist van wat er in Dockerfiles gebeurt.



  1. GeoLocation API-aanroepen tegen een EVE RESTful API

  2. Werk meerdere documenten bij door documenten in body, mangoest/mongoest aan te bieden

  3. Django, Redis:waar verbindingscode te plaatsen

  4. Hoe een node.js met redis op kubernetes te implementeren?