Problemet her er din tilgang. Docker har ikke et init-system, som du er vant til på traditionelle systemer. Hvad docker gør, er at erstate PID 1 med den proces, du angiver i CMD
eller ENTRYPOINT
Dockerfile kommandoer. Indtil videre skal du ignorere ENTRYPOINT
, fordi den erstatter din CMD
køres med (normalt er det /bin/sh -c
). Du skal instruere docker til at starte din mongod-tjeneste i din Dockerfile med CMD
kommando, som:
CMD usr/bin/mongod
Og når du kører din container, vil mongod være din PID 1. Nu spekulerer du sikkert på på dette tidspunkt "Men hvad med min SSH-server?" og svaret er:Kør ikke en SSH-server på dine docker-containere. Der er nogle tilfælde, hvor det er okay at køre en SSH-server, men næsten alle de "normale" årsager (fejlretning, C&C osv.) er annulleret med "bedste praksis" for at få en shell på din container:
docker exec -it myContainer /bin/bash
Dette vil falde dig ned i en skal på din løbebeholder. Anbefalingen her til at administrere konfiguration og ændringer i din docker-container er at bruge noget som Ansible. Husk dog, at docker-containere er flygtige, og du bør ikke genstarte tjenester og ændre konfigurationstilstand på dem. Hvis du har brug for en konfigurationsændring, skal du ændre Dockerfilen eller konfigurationsdataene og derefter starte en ny container. Held og lykke! Her
er lidt mere information om Dockerizing MongoDB, men husk at metoden beskrevet der ændrer ENTRYPOINT
i Dockerfilen, som er lidt mere involveret og kræver en bedre forståelse af, hvad der foregår i Dockerfiles.