Dockerはelasticsearchイメージを起動し、ディレクトリをマウントした後にエラーを解決します

Dockerはelasticsearchイメージを起動し、ディレクトリをマウントした後にエラーを解決します

docker hub から es イメージ (バージョン 6.4.2) をダウンロードしました。詳細は次のとおりです。

より重要なのは、次の 2 つです。1 つ目は作業ディレクトリであり、マウント ディレクトリもこれに対応している必要があります。2 つ目は、事前に記述された起動スクリプトが指定される起動コマンドです。そこで、空のコンテナを起動して、内部で何が起こっているかを確認しました。

コンテナ内のディレクトリ構造は上記の通りです。data はデータの保存に使用され、logs はログの保存に使用されます。

次に、起動スクリプトを確認します

ローカルディレクトリの docker-entrypoint.sh

前半については、あまり理解できていませんが、最後の部分は、マウント ディレクトリに関係しています。マウント ディレクトリ以降の操作を扱っており、おおよそ次のようになります。

ルート ユーザーの場合 (docker がコンテナーを起動します。デフォルトでは、コンテナーはルート ユーザーとして起動されます)、TAKE_FILE_OWNERSHIP 変数が存在する場合は、2 つのディレクトリ /usr/share/elasticsearch/{data,logs} をユーザー 1000 に属するように変更します (ここで、最終的なデータ ストレージ パスが data であることもわかるため、data の下にマウントする必要があります)。

ID 1000 のユーザー:

elasticsearch ユーザーなので、ディレクトリをマウントしなければそのままコンテナを起動できます。マウントしたら変数を追加して任意の値を割り当てると正常に起動できます。

docker run -itd -v /root/es-data/:/usr/share/elasticsearch/data -e TAKE_FILE_OWNERSHIP=111 -p 9200:9200 --name es elasticsearch:6.4.2

補足知識: elasticsearch の docker インストールと遭遇した落とし穴を記録する

まずコマンドラインを与える

docker run -d -p 9200:9200 -p 9300:9300 -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" --name=<ES 名> elasticsearch:<ES バージョン>

このコマンドを使用して、es dockerイメージコンテナを直接インストールして実行します。

質問

起動するには、コマンド docker run -d -p 9200:9200 -p 9300:9300 --name=<your es name> elasticsearch:<es version> を使用します。起動しているかどうかを確認するには、docker ps コマンドを使用して以下を検索します。

es は起動しませんでした。

そこで、docker ps -a コマンドを再度使用しました。

起動が終了したことがわかりました。

次に、docker logs -f <コンテナ ID> コマンドを使用して、es 起動ログを表示します。

一番下までスクロールします:

次のようになります:

電源管理:

メモリ: 4k ページ、物理 1882892k (空き 89076k)、スワップ 0k (空き 0k)

vm_info: linux-amd64 JRE (1.8.0_181-8u181-b13-2~deb9u1-b13) 用の OpenJDK 64 ビット サーバー VM (25.181-b13)、2018 年 10 月 22 日 18:05:23 に「pbuilder」によって gcc 6.3.0 20170516 でビルドされました

時刻: 2018年11月23日金曜日 07:00:34
経過時間: 0 秒 (0d 0h 0m 0s)

そこでエラーメッセージをコピーして Google で検索し、問題を見つけました。 elasticsearch5.+ のデフォルトのメモリ構成は 2g です。 docker に 2g のメモリしか割り当てなかったので、GG でした。

古いコンテナと古いイメージを削除した後、docker起動コマンドに-e "ES_JAVA_OPTS=-Xms512m -Xmx512m"を追加して問題を解決します。

docker ps:

最後に、ポート 9200 にアクセスします。

オレンジ

Docker で elasticsearch イメージを起動し、ディレクトリをマウントした後に発生するエラーを解決する方法に関する上記の記事は、私が皆さんと共有したいことのすべてです。これが皆さんの参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • JDKバージョンの問題によりElasticsearchが起動に失敗する問題を解決する
  • DockerがElasticsearch7.xを起動してエラーを報告する問題を解決する
  • Docker が elasticsearch を起動するときのメモリ不足の問題と解決策
  • elasticsearch 起動時の警告: JVM メモリをロックできません
  • Elasticsearch は guice を通じてノードアセンブリの起動プロセスを挿入します

<<:  MySQL binlog_ignore_dbパラメータの具体的な使用法

>>:  登録フォームのデザインルール

推薦する

Windows はリモート デスクトップが長時間自動的に切断されるのを防ぎます

Windows リモート デスクトップを使用してサーバーに接続したことがある人なら、リモート デスク...

clipboard.js の使用法の概要

目次(1)はじめに: (2)クリップボードの内容をコピーする方法は次のとおりです。 (3)関数演算に...

ApacheとTomcatによるクラスタ環境構築プロセスの分析

実際、Apacheクラスタを構築するのは難しくありません。私もインターネットで情報を見つけて自分で設...

SpringbootはDockerデプロイメントを統合し、Dockerイメージを構築する2つの方法を実装します。

Docker は、あらゆるアプリケーション用の軽量でポータブルな自己完結型コンテナーを簡単に作成で...

...

Ubuntu の MySQL のパラメータ ファイル my.cnf の詳細な分析

序文MySQL に関する私の理解に基づくと、パフォーマンスの最適化作業やマスター スレーブ レプリケ...

MySQL の 4 つのトランザクション分離レベルを例を使って分析する

序文データベース操作では、同時データ読み取りの正確性を効果的に保証するために、トランザクション分離レ...

Vue3 の ref と toRef の違いを簡単に分析します

1. refがコピーされ、ビューが更新されますrefを使用してオブジェクトのプロパティ値をレスポンシ...

MySQL (5.6 以下) の JSON 解析の詳細な例

MySQL(5.6以下)はjsonを解析します #json 解析関数 DELIMITER $$ `j...

MySQL 8.0.24 バージョンのインストールと設定方法のグラフィックチュートリアル

この記事ではMySQL 8.0.24バージョンのインストールと設定方法を記録し、皆さんと共有しますM...

Linux での sshd サービスとサービス管理コマンドの詳細な説明

sshd SSH は Secure Shell の略で、アプリケーション層のセキュリティ プロトコル...

Redis を Docker コンテナとして素早くデプロイする方法

目次はじめるデータストレージサーバーを構成するRedis セキュリティの管理Redisインストールの...

フロントエンドネットワーク、JavaScriptの最適化、開発のヒントについて簡単に説明します。

1. ネットワークの最適化YSlowには23のルールがあります。これら数十のルールは、主に、不要な...

スタイル属性 (element.style) で定義されたインライン スタイルを削除する方法

Magento を頻繁に変更する場合、element.style に遭遇することがあります。 これは...