ここでの問題はあなたのアプローチです。 Dockerには、従来のシステムで使用されているようなinitシステムはありません。 dockerが行うことは、交換です。 CMD
で指定したプロセスのPID1
またはENTRYPOINT
Dockerfileコマンド。今のところ、ENTRYPOINT
は無視してください 、CMD
に置き換わるため (通常は/bin/sh -c
で実行されます )。 CMD
を使用してDockerfileでmongodサービスを開始するようにdockerに指示する必要があります 次のようなコマンド:
CMD usr/bin/mongod
そして、コンテナを実行すると、mongodがPID 1になります。さて、この時点でおそらく「しかし、私のSSHサーバーはどうですか?」答えは次のとおりです。DockerコンテナでSSHサーバーを実行しないでください。 SSHサーバーの実行は問題ないが、「通常の」理由(デバッグ、C&Cなど)のほとんどすべてが、コンテナーでシェルを取得するための「ベストプラクティス」によって無効にされるいくつかのユースケース:
docker exec -it myContainer /bin/bash
これにより、実行中のコンテナのシェルに移動します。 Dockerコンテナーの構成と変更を管理するためのここでの推奨事項は、Ansibleのようなものを使用することです。ただし、Dockerコンテナーは一時的なものであり、サービスを再起動したり、サービスの構成状態を変更したりしないでください。構成の変更が必要な場合は、Dockerfileまたは構成データを変更してから、新しいコンテナーを開始します。幸運を! こちら
はMongoDBのDockerizingに関するもう少しの情報ですが、そこで説明されているメソッドはENTRYPOINT
を変更することに注意してください。 Dockerfileで、これはもう少し複雑で、Dockerfileで何が起こっているのかをよりよく理解する必要があります。