起動できないdockerコンテナを修復する方法
起動できないdockerコンテナを修復する方法
背景:
テストサーバでdockerを使用してelasticsearchサービスクラスタを構築しましたが、esに中国語の分詞のプラグインをインストールする必要があるため、インストールの姿勢に問題があり、起動できませんでした.テスト開発用であり、コンテナにデータボリュームをマウントすることもないため、コンテナが閉じた後、ホストに関連するディレクトリはありません.またpluginsディレクトリ構造のため、esサービスが関連ファイルを見つけられず起動できません.
解決策は、cpコマンドを使用してpluginsディレクトリ全体をホストの下にコピーして変更し、cpをコンテナに戻すことです.
もう1つの解決策は、ミラーを作成し、この問題コンテナをdocker commitで新しいミラーにコミットし、docker run-itで新しいミラーに基づいて新しいコンテナを実行してプロファイルを変更(修復)することです.新しいコンテナを介して新しいミラーをコミットし、新しいミラーに基づいてコンテナを再起動します(最初のコンテナと同じ).この方法は実行可能であるが,問題はステップが多く,新しいミラーがコミットされ,後続のメンテナンスに複雑さが増すことである.
手順は次のとおりです.
背景:
テストサーバでdockerを使用してelasticsearchサービスクラスタを構築しましたが、esに中国語の分詞のプラグインをインストールする必要があるため、インストールの姿勢に問題があり、起動できませんでした.テスト開発用であり、コンテナにデータボリュームをマウントすることもないため、コンテナが閉じた後、ホストに関連するディレクトリはありません.またpluginsディレクトリ構造のため、esサービスが関連ファイルを見つけられず起動できません.
解決策は、cpコマンドを使用してpluginsディレクトリ全体をホストの下にコピーして変更し、cpをコンテナに戻すことです.
# plugins cp
[root@study-01 ~]# docker cp es1:/usr/share/elasticsearch/plugins ./
... ...
[root@study-01 ~]# docker cp ./plugins/ es1:/usr/share/elasticsearch/ # cp
[root@study-01 ~]# docker start es1 #
もう1つの解決策は、ミラーを作成し、この問題コンテナをdocker commitで新しいミラーにコミットし、docker run-itで新しいミラーに基づいて新しいコンテナを実行してプロファイルを変更(修復)することです.新しいコンテナを介して新しいミラーをコミットし、新しいミラーに基づいてコンテナを再起動します(最初のコンテナと同じ).この方法は実行可能であるが,問題はステップが多く,新しいミラーがコミットされ,後続のメンテナンスに複雑さが増すことである.
手順は次のとおりです.
#
[root@study-01 ~]# docker commit :
[root@study-01 ~]# docker rm # ,
#
[root@study-01 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
old-es3 first bf1fdb9b3a2d 54 minutes ago 550 MB
old-es2 first 4e1a92871782 55 minutes ago 550 MB
old-es1 first d1a485b8f5c0 55 minutes ago 551 MB
# , ,
[root@study-01 ~]# docker run -it --name fix-es1 old-es1:first /bin/bash
#
[root@study-01 ~]# docker commit :
#
[root@study-01 ~]# docker run -d --name es1 -p 9200:9200 -p 9300:9300 ok-es1:first