序文Dockerを使ってHadoopクラスタを起動するたびに、ネットワークカードの再バインド、IPの固定、/etc/hostsファイルの修正などが必要になります。これは非常に面倒なので、その原因と最適化を探りたいです。 1. 理由/etc/hosts、/etc/resolv.conf、/etc/hostname の 3 つのファイルはコンテナ内には存在しません。コンテナを起動すると、これらのファイルは mount の形式でコンテナ内にマウントされます。したがって、コンテナ内でこれらのファイルが変更された場合、変更された部分はコンテナの最上位層には存在せず、これら 3 つの物理ファイルに直接書き込まれます。 再起動後に変更が消えてしまうのはなぜですか?その理由は、Docker がコンテナを起動するたびに、新しい /etc/hosts ファイルが再構築されるからです。なぜでしょうか?理由は、コンテナが再起動され、IP アドレスが変更され、hosts ファイル内の元の IP アドレスが無効になるためです。したがって、hosts ファイルを変更する必要があります。そうしないと、ダーティ データが生成されます。 2. 解決策コンテナを起動するたびに IP とホスト名を指定し、/etc/hosts にホストを追加します。コマンドは次のとおりです。 docker run -itd --name hadoop0 --hostname hadoop0 --net network_my --ip 192.168.10.30 --add-host hadoop1:192.168.10.31 --add-host hadoop2:192.168.10.32 -d -P -p 50070:50070 -p 8088:8088 hadoop:master Docker ネットワーク モードと構成操作 --hostname : ホスト名を指定します。 --net: ネットワークモードを指定する --ip: IPを指定する --add-host : /etc/hostsに追加するホストを指定します 上記のコマンドには docker バージョン 1.9 以上が必要です。コンテナを起動したら、コンテナに入り/etc/hostsを確認します。 [root@centos-linux-7 /]# docker exec -it hadoop0 bash [root@hadoop0 /]# cat /etc/hosts 127.0.0.1 ローカルホスト ::1 ローカルホスト ip6-ローカルホスト ip6-ループバック fe00::0 ip6-ローカルネット ff00::0 ip6-mcastプレフィックス ff02::1 ip6-全ノード ff02::2 ip6-オールルーター 192.168.10.31 ハッシュ1 192.168.10.32 ハッシュ2 192.168.10.30 ハッシュ0 [ルート@hadoop0 /]# 上記のコマンドは長すぎるため、シェル スクリプトとして記述できます。オンラインで言及されている他の方法がいくつかあります。1. Dockerfileを使用してイメージを構築する 2. docker-composeの使用を開始する 3. Dockerコンテナがパブリックにロードを開始する環境変数の設定ファイルを変更します(私のバージョンの設定ファイルは見つかりませんでした) 最初の方法は機能しないはずです。Dockerfile はイメージをビルドするときに関連する環境変数を設定できますが、前述のように、IP、ホスト名、および /etc/hosts はすべて再読み込みされるため、Docker コンテナの起動時に指定する必要があります。イメージ内のものは受け入れられません。 2 つ目は、私はまだ docker-compose に精通していないため、当面は詳細には説明しません。 3 番目はパブリックであり、異なるコンテナーごとにカスタマイズできないため、私にとっては不便です。 まとめると、コンテナ起動時にコマンドラインで指定するのが一番便利だと思いますが、コマンドラインが長すぎるのが難点です。でも、シェルスクリプトとして書けばいいんですよ! 補足: Linux Docker は固定のコンテナ IP を設定します (Docker のデフォルトのコンテナ IP は変更されます) 1. 独自のネットワークタイプを作成し、ネットワークセグメントを指定します注文 docker ネットワーク作成 --subnet=172.18.0.0/16 mynetwork 2. イメージの起動時に独自のネットワークIPを指定する注文 docker run -itd -p 5001:5001 --name イメージ名 --net mynetwork --ip 172.18.0.2 --privileged=true --restart=always -d イメージ名 3. Dockerを再起動してコンテナのIPを表示するドッカーを再起動する 注文 サービスdockerの再起動 すべてのコンテナを表示 注文 ドッカーps -a コンテナ情報の表示 注文 docker コンテナ名を検査する この方法ではコンテナのIPは変更されません 上記は私の個人的な経験です。参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。間違いや不備な点がありましたら、遠慮なくご指摘ください。 以下もご興味があるかもしれません:
|
<<: テーブルを作成するための HTML dl、dt、dd タグとテーブル作成テーブル
フロントエンドの開発過程で、チェックボックスが必要な状況が発生しました。ユーザー操作の利便性を考慮し...
インストールとアンインストールの表示 # rpm -qa | grep mysql を表示 # アン...
私はずっとDockerにはIPアドレスがないと思っていました。実はDockerのネットワークテンプレ...
DB ベンチマーク テストを実行する場合、qps と tps はデータベースのパフォーマンスを測定す...
HTML における相対と絶対の違い: 正直に言うと、HTML は世界で最もシンプルな言語です。タグ言...
結果: 実装コード: html <div class="buttons"&...
この記事では、カウンター表示を実現するためのVueの具体的なコードを例として紹介します。具体的な内容...
目次導入クッキークッキーとはクッキー生成方法クッキーの適用シナリオクッキーのデメリット回避策ローカル...
この記事の例では、ショッピングカートの計算を実装するためのjsの具体的なコードを参考までに共有してい...
1. csvファイルをインポートする次のコマンドを使用します。 1.mysql> infile...
目次1. ユーザーが作成したスクリプト2. 単語当てゲーム3. ネットワークカードのトラフィック監視...
js興味深いカウントダウンケース、参考までに、具体的な内容は次のとおりですコード: <!DO...
目次MySQL 内部結合、左結合、右結合、外部結合、複数テーブルクエリビルド環境: 1. 内なる慈恩...
多くのプロジェクトでは、検証コードの送信など、カウントダウン機能を実装する必要があります。ここで、簡...
序文テーブルを削除するには、無意識に思い浮かぶコマンドは、DROP TABLE "テーブル...