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パラメータの具体的な使用法

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

推薦する

グループフィールドを 1 行に書き込むための mysql group_concat メソッドの例

この記事では、MySQL group_concat を使用してグループ化されたフィールドを 1 つの...

Windows10にMySQL5.6.35データベースを2つインストールする

次のように、Win10 での 2 つの MySQL5.6.35 データベースのインストールを記録しま...

Vue3 コンポジション API でロジックの再利用を実装する方法

Composition API はロジック再利用手順を実装します。ロジックコードを関数に抽出します。...

Vue で CSS カスタム変数を使用する方法

目次CSS カスタム変数機能は古くから存在していますが、実際の開発ではあまり使用されていません。その...

JSのバイナリファミリーについての簡単な説明

目次概要ブロブBlob の動作BLOB ダウンロード ファイルブロブ画像のローカル表示BLOB ファ...

reactにおけるstateの略語の詳細な説明

序文国家とは何か私たちは皆、React はステート マシンであると言います。それはどのように反映され...

LDAP ユーザー認証を使用するように Linux を構成する方法

私は CentOS に実装された LDAP ユーザー管理を使用しています。これはインターネット上のほ...

XshellがvirtualBox仮想マシンに接続できない問題の解決策

まず、VirtualBox仮想マシンのネットワーク設定モードについて説明します。NAT+ホストオンリ...

ES6 Promiseの使い方の詳細な説明

目次約束とは何ですか?拒否の使用法キャッチの使い方すべての使用法レースの使用約束とは何ですか? Pr...

さまざまなSQL結合を簡単に学ぶ

SQL JOIN 句は、テーブル間の共通フィールドに基づいて 2 つ以上のテーブルの行を結合するため...

CSS プロパティ *-gradient の実用的な価値を探る

まず興味深い性質であるconic-gradientを紹介しましょう。円錐グラデーション!円グラフの作...

シンプルなショッピングフォームを実装するJavaScript

この記事では、簡単なショッピングフォームを実装するためのJavaScriptの具体的なコードを参考ま...

Linuxで静的ネットワーク接続を構成する方法

Linux システムのネットワーク接続を構成するのは難しい場合があります。幸いなことに、多くの新しい...

Dockerはredis 5.0.7をインストールし、外部構成とデータの問題をマウントします

Redis は、ANSI C で記述されたオープンソースの NoSQL データベースであり、ネットワ...

mysql5.6 マスタースレーブ設定と非同期の問題の詳細な説明

目次1. MySQL マスタースレーブレプリケーションの原理2. MySQLのコンパイルとインストー...