コンテナ全体を停止せずに、Docker コンテナ内で実行されているサービスを停止します

okwaves2024-01-25  7

Couchbase を実行している Docker コンテナがあり、couchbase-server サービスを一時的に停止する必要がある操作を実行する必要があります。 これは、コンテナ内の一部の構成ファイルを上書きするために必要です。操作手順は以下のとおりです。

docker exec -it "bumblebase" bash -c "systemctl stop couchbase-server"

docker exec -it "bumblebase" bash -c "echo \"{rest_port, 3456}.\" >> \"/opt/couchbase/etc/couchbase/static_config\""

docker exec -it "bumblebase" bash -c "rm -rf /opt/couchbase/var/lib/couchbase/config/config.dat"

docker exec -it "bumblebase" bash -c "systemctl start couchbase-server"

これを実行すると、次のエラーが表示されます ;

Failed to connect to bus: No such file or directory

次のスタックオーバーフローの回答から、回避策を 1 つだけ見つけました。ただし、couchbase のデフォルト イメージを変更するのは問題ありません。また、代替イメージはしばらくの間メンテナンス対象外としてマークされています。

couchbase のドキュメントにあるこの代替コマンドも試してみました:

docker exec -it "bumblebase" bash -c "service couchbase-server stop"

しかし、別のエラーが発生します:

couchbase-server: unrecognized service

コンテナ内で couchbase-server サービスを停止したいのですが、可能ですか?それとも、設定ファイルを上書きする別の解決策はありますか?

1

通常、コンテナ内でアプリケーションを実行し続けるために systemd を実行することはありません。変更を実行するには、おそらくコンテナを停止する必要があります (おそらく外部ボリュームで)。使用している基本イメージを共有してもよろしいですか?

– グスタボ川本

2020 年 9 月 3 日 17:26

@GustavoKawamoto 公式 Couchbase コミュニティ イメージ github.com/couchbase/docker/blob/… を使用しています。

– カワロー

2020 年 9 月 3 日 20:56



------------------------

通常、コンテナ全体を停止することとは別に、コンテナ内のプロセスを停止することはありません。実際、この状況では、コンテナを削除して再作成することが非常に一般的です。同様に、コンテナ内のファイルを編集するために docker exec を使用すべきではありません。これは定期的な再起動では失われます。

まだコピーしていない場合は、構成ファイルをコンテナからコピーできます

docker cp bumblebase:/opt/couchbase/etc/couchbase/static_config .

これで編集できるようになります選択したエディタを使用して、構成ファイルのローカル コピーを作成します。

最後に、コンテナを停止、削除、再作成できます。 docker run -v オプションを使用すると、個々の構成ファイルをコンテナに挿入できます。

docker stop bumblebase
docker rm bumblebase
docker run \
  -d \
  -p 8091-8094:8091-8094 -p 11210:11210 \
  --name bumblebase \
  -v $PWD/static_config:/opt/couchbase/etc/couchbase/static_config \
  couchbase:community-6.6.0

いくつかの理由により、service や systemctl などのコマンドは基本的に Docker ではまったく機能しません。一般に、コンテナが実行するサーバー プロセスは、メイン コンテナ プロセスとして実行されるフォアグラウンド プロセスです。 init システムやバックグラウンド プロセスは存在せず、サーバー プロセスが終了すると、コンテナも一緒に終了します。

1

ソリューションを使用してコンテナを起動することで、構成ファイルを正常に書き込むことができました。悲しいことに、これを行うと、couchbaseにまったくアクセスできなくなるという別の問題が発生します。 -v オプションを削除すると元に戻ります (ただし、コンテナ内からカスタム ポートを設定できないという出発点で再び行き詰まります)。この点に関しては、別の投稿を更新するつもりです。少なくともこれで、設定ファイルの変更に関する私の問題は解決しました :)

– カワロー

2020 年 9 月 3 日 22:37



------------------------

また、構成ファイルをホストからコンテナにマウントし、conf を編集することもできます。ig ファイルを作成し、コンテナを再起動するだけです

共有する フォローする

1 月 17 日 8:22 に回答

グリゴリー・ヴィドリア

グリゴリー・ヴィドリア

21

1

銅バッジ 1 個

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。