序文 これまでは、パイプワークで割り当てた静的 IP は一時的なものであり、再起動すると無効になっていました。また、パイプワークでバインドされた物理マシン、仮想マシン、Docker コンテナの IP はすべて同じネットワークセグメントにあり、実稼働環境では非常に困難でした。現在は、Docker 独自のネットワークを使用して、再起動しても消えない固定 IP 割り当てを実装しています。 環境の紹介
バインディング手順 まず192.168.1.105仮想マシンを操作する ステップ1: カスタムネットワークを作成する
注: ここでは 172.172.0.0 ネットワーク セグメントが選択されていますが、他の空きネットワーク セグメントを指定することもできます。docker-br0 はカスタム ブリッジの名前で、任意の名前を付けることができます。 注: ここでのサブネット マスクは 255.255.255.0 である必要があります。これは、IP の後の 24 です。これは、後で iptables を使用してルーティング テーブルを構成するためです。以前は 255.255.0.0 を使用していましたが、構成できませんでした。そのため、ここでは 24 に設定しました。 ブリッジを作成したら、ifconfig を使用して追加のブリッジを表示します。追加のブリッジは、Docker の起動または再起動後に自動的に表示されます。永続的にブリッジを削除するには、docker network rm docker-br0 を使用します。 ステップ2: コンテナを起動するIPアドレスとして、カスタムネットワークセグメント内の任意のIPアドレスを選択します。
注: コンテナを作成するときに、最初の手順で作成されたネットワーク セグメント内の静的 IP アドレスとして 172.172.0.10 が選択されました。そして、docker-br0 ブリッジから始めます。-v はマウントであり、コンテナにマウントする必要があるローカル ディレクトリを示します。 3bee3060bfc8は画像IDです docker exec -it nginx /bin/bash を使用して起動したコンテナに入り、yum install net-tools を使用して iptables をダウンロードし、ifconfig を使用してコンテナの IP を表示します。 ステップ3: ローカルマシンとコンテナが相互にpingできるかどうかをテストする # テスト ping Baidu [root@e98109ef9fd6 /]# ping www.baidu.com PING www.a.shifen.com (119.75.213.61) 56(84) バイトのデータ。 119.75.213.61 からの 64 バイト (119.75.213.61): icmp_seq=1 ttl=56 time=10.1 ms 119.75.213.61 からの 64 バイト (119.75.213.61): icmp_seq=2 ttl=56 time=8.26 ms #テストホスト [root@e98109ef9fd6 /]# ping 192.168.1.105 PING 192.168.1.105 (192.168.1.105) 56(84)バイトのデータ。 192.168.1.105 からの 64 バイト: icmp_seq=1 ttl=64 time=0.099 ms 192.168.1.105 からの 64 バイト: icmp_seq=2 ttl=64 time=0.081 ms # 別の仮想マシンに ping をテストします [root@e98109ef9fd6 /]# ping 192.168.1.106 PING 192.168.1.106 (192.168.1.106) 56(84)バイトのデータ。 192.168.1.106 からの 64 バイト: icmp_seq=1 ttl=63 time=1.67 ms 192.168.1.106 からの 64 バイト: icmp_seq=2 ttl=63 time=0.587 ms この時点で、コンテナに固定 IP アドレスをバインドすることは完了です。以下は、コンテナがホスト間で相互にアクセスする方法です。 ホスト間のコンテナアクセス ステップ 4: 192.168.1.106 仮想マシンで、上記のステップ 1 ~ 3 に従って、コンテナーを固定 IP アドレスにバインドします。 ステップ 5: 2 つのコンテナーで相互にアクセスし、ホスト間のコンテナー アクセスが ping できないことを確認します。 [root@e98109ef9fd6 /]# 172.172.1.10 にpingを実行します PING 172.172.1.10 (172.172.1.10) 56(84)バイトのデータ。 192.168.1.105 icmp_seq=1 宛先ホストに到達できません 192.168.1.105 icmp_seq=2 宛先ホストに到達できません 192.168.1.105 icmp_seq=3 宛先ホストに到達できません [root@e98109ef9fd6 /]# 172.172.0.10 にpingを実行します PING 172.172.0.10 (172.172.0.10) 56(84)バイトのデータ。 192.168.1.106 icmp_seq=1 宛先ホストに到達できません 192.168.1.106 icmp_seq=2 宛先ホストに到達できません 192.168.1.106 icmp_seq=3 宛先ホストに到達できません ステップ6: ルーティングテーブルを構成する #ルーティングルールを追加する ip route add 他のコンテナのipネットワークセグメント/サブネットマスク via 他の仮想マシンのip devはどのネットワークカードを介して通信するか のように:
追加後、route コマンドを使用して追加されたルールを表示するか、ip route del 172.172.1.0/24 を使用してルーティング ルールを削除できます。 192.168.1.105 および 192.168.1.106 の仮想マシンにそれぞれ対応するルーティング ルールを追加します。
ステップ 7: 2 つのコンテナーで相互にアクセスし、クロスホスト コンテナーが相互に ping できることを確認します。 [root@e98109ef9fd6 /]# 172.172.1.10 にpingを実行します PING 172.172.1.10 (172.172.1.10) 56(84)バイトのデータ。 172.172.1.10 からの 64 バイト: icmp_seq=1 ttl=62 time=0.636 ms 172.172.1.10 からの 64 バイト: icmp_seq=2 ttl=62 time=0.411 ms 172.172.1.10 からの 64 バイト: icmp_seq=3 ttl=62 time=0.472 ms [root@8343ad7e7f0f /]# 172.172.0.10 にpingを実行します PING 172.172.0.10 (172.172.0.10) 56(84)バイトのデータ。 172.172.0.10 からの 64 バイト: icmp_seq=1 ttl=62 time=0.920 ms 172.172.0.10 からの 64 バイト: icmp_seq=2 ttl=62 time=0.674 ms 172.172.0.10 からの 64 バイト: icmp_seq=3 ttl=62 time=0.657 ms 追加知識: docker-compose カスタム ネットワーク、固定コンテナ IP アドレス デフォルトのブリッジ ネットワークのため、コンテナーを再起動すると IP アドレスが変更されます。シナリオによっては、コンテナの IP アドレスを修正する必要があります。 Docker-compose は、コマンド モードに応じてネットワークやコンテナーなどを作成する Docker 用のオーケストレーション ツールです。 設定ファイルを使用すると比較的便利で、問題を追跡できます。 docker-compose.ymlファイルを直接貼り付けます バージョン: '2' サービス: nginx: イメージ: nginx:1.13.12 コンテナ名: nginx 再起動: 常に 端末: 真 ネットワーク: 外部ネットワーク: ipv4_アドレス: 172.19.0.2 ネットワーク: 外部ネットワーク: ipam: 設定: - サブネット: 172.19.0.0/16 ゲートウェイ: 172.19.0.1 例: ゲートウェイはゲートウェイアドレスです サブネットはネットワークセグメントです extnetworkはカスタムネットワーク名です 上記の設定では、nginxコンテナのIPアドレスは172.19.0.2に固定されています。 例: カスタム ネットワーク モード: バージョン: '2' サービス: nginx: イメージ: nginx:1.13.12 コンテナ名: nginx 再起動: 常に ネットワーク: 外部ネットワーク: ポート: - 80:80 ボリューム: - '/nginx/conf.d:/etc/nginx/conf.d' nginx2: イメージ: nginx:1.13.12 コンテナ名: nginx2 再起動: 常に ネットワーク: 外部ネットワーク: ipv4_アドレス: 172.19.0.2 デシベル: イメージ:mysql:5.7 コンテナ名: db ボリューム: - /var/lib/mysql:/var/lib/mysql 再起動: 常に ネットワーク: 外部ネットワーク: ポート: -3306:3306 環境: MYSQL_ROOT_PASSWORD: ワードプレス MYSQL_DATABASE: ワードプレス MYSQL_USER: ワードプレス MYSQL_パスワード: wordpress ワードプレス: 画像: wordpress:最新 コンテナ名: wordpress 依存: -db ポート: - 「8000:80」 再起動: 常に ネットワーク: 外部ネットワーク: 環境: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_NAME: ワードプレス WORDPRESS_DB_USER: ワードプレス WORDPRESS_DB_PASSWORD: ワードプレス ネットワーク: 外部ネットワーク: ipam: 設定: - サブネット: 172.19.0.0/16 ゲートウェイ: 172.19.0.1 上記のDockerバインディング固定IP/クロスホストコンテナ相互アクセス操作に関する記事は、編集者が皆さんと共有する内容のすべてです。参考になれば幸いです。また、123WORDPRESS.COMを応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: XHTML CSS ページをプリンタ ページに変換する
Docker の基本的な操作を学習した後、コンテナにいくつかの基本的なアプリケーションをデプロイして...
設計業務では、設計者がレビューに参加したり、リーダーの一部が設計案の詳細が足りないと言っているのをよ...
WindowsにMySQLの圧縮バージョンをインストールする方法の詳細については、以下を参照してくだ...
2.1 セマンティクス化により、Webページが検索エンジンに理解されやすくなりますこの章では、We...
目次2. 目的2.1 オブジェクトにプロパティを追加する2.3 オブジェクトの複製2.4 複数のオブ...
質問:オリジン サーバーはターゲット リソースの表現を見つけることができないか、既存の表現を公開した...
MySQL 5.7.17 のインストールと設定方法の概要最初のステップは、MySQL公式サイトから...
MySQL ページング分析の原理と効率改善PERCONA PERFORMANCE CONFERENC...
1. インデックスの役割一般的に言えば、インデックスは本の目次に相当します。条件に基づいてクエリを実...
序文最近のプロジェクトでは、大量のデータを保存する必要があり、このデータには有効期限があります。クエ...
序文Vue アプリケーションなどの静的ページを開発する場合、クロスドメインになる可能性のあるインター...
コードをコピーコードは次のとおりです。 IE6 と FF の違い: background:orang...
この記事では、参考までにvueキャンバスのタイムライン描画の具体的なコードを紹介します。具体的な内容...
目次1. データベースの制約1.1 はじめに1.2 制約の種類1.3 ヌルでない1.4 ユニーク1....
目次安定スロットリング要約する安定自動ドアは人を感知してドアを開け、5 秒間のカウントダウンを開始し...