[解決済み] Docker CMDを複数回使用して、複数のサービスを実行することができないのはなぜですか?
2022-05-18 02:42:18
質問
centos+sshというDockerfileからベースイメージを構築しています。centos+sshのDockerfileでは、sshサービスを実行するためにCMDを使用しています。
次に、rabbitmqという名前の他のサービスを実行するイメージをDockerfileで構築したいと思います。
FROM centos+ssh
EXPOSE 22
EXPOSE 4149
CMD /opt/mq/sbin/rabbitmq-server start
rabbitmqコンテナを起動するには,run:を実行します.
docker run -d -p 222:22 -p 4149:4149 rabbitmq
が、sshサービスは動作しません。rabbitmqのDockerfileのCMDがcentosのCMDを上書きしている感じです。
- dockerイメージの中でCMDはどのように動作するのでしょうか?
- 複数のサービスを実行したい場合、どのようにすればよいですか?supervisorを使う?
どのように解決するのですか?
CMDはDockerfileに書かれていますが、実際には実行時の情報です。EXPOSEと同じですが、RUNやADDなどとは異なります。つまり、Dockerfileを拡張したり、実行コマンドで上書きすることができます。常に、CMDは1つだけです。
複数のサービスを実行したい場合は、確かにsupervisorを使うことになりますね。各サービスごとにsupervisorの設定ファイルを作り、それをディレクトリにADDし、supervisorを実行する際に
supervisord -c /etc/supervisor
でsupervisorを実行すると、すべてのサービスをロードするsupervisor設定ファイルを指し示し、次のようになります。
[supervisord]
nodaemon=true
[include]
files = /etc/supervisor/conf.d/*.conf
もっと詳しく知りたい方は、こちらのブログで書いています。 http://blog.trifork.com/2014/03/11/using-supervisor-with-docker-to-manage-processes-supporting-image-inheritance/
関連
-
[解決済み] Docker-Composeを使用して、複数のコマンドを実行する方法
-
[解決済み] Dockerイメージをコンテナとして実行する
-
[解決済み】サービス開始後にDockerコンテナを起動し続けるには?
-
[解決済み] Docker Compose: そのようなイメージはありません
-
[解決済み] docker イメージの sha256 コードはどこで確認できますか?
-
[解決済み] Dockerの実行と作成
-
[解決済み] Docker-compose マウントされたボリュームにユーザーとグループを設定する
-
[解決済み] Linuxでdockerを停止する方法
-
[解決済み] Docker CMDを複数回使用して、複数のサービスを実行することができないのはなぜですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン