序文前回は、 -Linkパラメータを使用してコンテナ間の相互接続を設定し、コンテナ内でIPアドレスだけでなく対応するドメイン名にもアクセスできることを紹介しました。まずレビューします。取り扱う前にすべての容器を空にしてください。 -リンク# すべてのコンテナをクリアします $root@VM-8-11-ubuntu:~# docker stop $(docker ps -aq) && docker rm $(docker ps -aq) 88f8f241ca30 765ed1889bfa $root@VM-8-11-ubuntu:~# docker run -it --name=mybusy02 -d busybox 82aff31e56f3913b3fa883a08ec95960eff88fc9977360a67264c0d53180844b $root@VM-8-11-ubuntu:~# docker run -it --name mybusy --link mybusy02:mybusy-net -d busybox b77e9762314f868518f799d3c572dec0b2ce13a684de072fb9f9e925135f6459 $root@VM-8-11-ubuntu:~# docker exec -it mybusy ping mybusy-net PING mybusy-net (172.17.0.2): 56 データバイト 172.17.0.2 からの 64 バイト: seq=0 ttl=64 time=0.131 ms 172.17.0.2 からの 64 バイト: seq=1 ttl=64 time=0.069 ms 172.17.0.2 からの 64 バイト: seq=2 ttl=64 time=0.069 ms $root@VM-8-11-ubuntu:~# docker exec -it mybusy cat /etc/hosts 127.0.0.1 ローカルホスト ::1 ローカルホスト ip6-ローカルホスト ip6-ループバック fe00::0 ip6-ローカルネット ff00::0 ip6-mcastプレフィックス ff02::1 ip6-全ノード ff02::2 ip6-オールルーター 172.17.0.2 mybusy-net 09a4b97fc09d mybusy02 # mybusy02がhostsファイルに追加されていることがわかりました 172.17.0.3 c73be07d21fb 接続されていることがわかりましたが、 mybusy02 が mybusy に ping する場合は、 –link が必要です。なので非常に面倒で、公式も --link パラメータを使用しないことを推奨しています。 Docker 0 ではコンテナ名アクセスはサポートされていません。次に、本日のハイライトであるカスタム ネットワーキングについて説明します。 カスタムネットワーク# 主に関連するコマンド $root@VM-8-11-ubuntu:~# docker network --help 使用方法: docker network コマンド ネットワークを管理する コマンド: コンテナをネットワークに接続する 作成 ネットワークを作成する コンテナをネットワークから切断する 検査 1つまたは複数のネットワークの詳細情報を表示する ls ネットワークを一覧表示する 未使用のネットワークをすべて削除する rm 1つまたは複数のネットワークを削除します コマンドの詳細については、「docker network COMMAND --help」を実行してください。 # これはデフォルトのネットワークモードです。brudge は docker 0 のブリッジです。$root@VM-8-11-ubuntu:~# docker network ls ネットワーク ID 名前 ドライバー スコープ cf05ea05d3bd ブリッジ ブリッジ ローカル 0ab28e475dc6 ホスト ホスト ローカル e4c628cc77db なし null ローカル create を使用して独自のブリッジ ネットワークを作成しましょう。ベース # --driver ネットワークタイプを設定します --subnet サブネットを設定します/16 = 255*255 IP から 0.0 を引いた値で、255.255 はおよそ 65535 に等しくなります $root@VM-8-11-ubuntu:~# docker network create --driver=bridge --subnet=192.168.0.0/16 my-net 1b668a5439b207d2080d95bffe829139cfa2456d691c8019a245e7f9d5a56970 root@VM-8-11-ubuntu:~# docker ネットワーク ls ネットワーク ID 名前 ドライバー スコープ cf05ea05d3bd ブリッジ ブリッジ ローカル 0ab28e475dc6 ホスト ホスト ローカル 1b668a5439b2 マイネットブリッジローカル e4c628cc77db なし null ローカル # ネットワーク情報を確認する $root@VM-8-11-ubuntu:~# docker network inspect my-net [ { 「名前」: 「my-net」、 「ID」: 「1b668a5439b207d2080d95bffe829139cfa2456d691c8019a245e7f9d5a56970」、 「作成日」: 「2021-12-01T09:47:21.410882291+08:00」、 「スコープ」:「ローカル」、 「ドライバー」:「ブリッジ」、 「IPv6を有効にする」:false、 「IPAM」: { "ドライバー": "デフォルト", 「オプション」: {}, 「設定」: [ { 「サブネット」: 「192.168.0.0/16」 } ] }, 「内部」:偽、 「接続可能」: false、 「イングレス」:偽、 "設定元": { 「ネットワーク」: 「」 }, "ConfigOnly": false、 「コンテナ」: {}, 「オプション」: {}, 「ラベル」: {} } ] 上記ではネットワークの作成方法と表示方法を紹介しました。次に、ネットワークの使用方法について見ていきましょう。 # mybusy コンテナを作成し、my-net ネットワークを設定します $root@VM-8-11-ubuntu:~# docker run -it --name mybusy --net=my-net -d busybox 180fbc8b04627762a896d8a85d8cb67063c01a0f3ad8a11352ab4695b022c272 # mybusy02 コンテナを作成し、my-net ネットワークを設定します $root@VM-8-11-ubuntu:~# docker run -it --name mybusy02 --net=my-net -d busybox 3c08d592537a9593c960c9664b4724521658f26be7b658a6483e6fbfe30b58a7 # コンテナ内で mybusy ping mybusy02 が成功しました$root@VM-8-11-ubuntu:~# docker exec -it mybusy ping mybusy02 PING mybusy02 (192.168.0.3): 56 データバイト 192.168.0.3 からの 64 バイト: seq=0 ttl=64 time=0.110 ms 192.168.0.3 からの 64 バイト: seq=1 ttl=64 time=0.070 ms この時点で、相互に ping できることがわかりました。これは完璧でした。次のmy-netネットワーク構成を見てみましょう root@VM-8-11-ubuntu:~# docker ネットワーク検査 my-net [ { 「名前」: 「my-net」、 「ID」: 「1b668a5439b207d2080d95bffe829139cfa2456d691c8019a245e7f9d5a56970」、 「作成日」: 「2021-12-01T09:47:21.410882291+08:00」、 「スコープ」:「ローカル」、 「ドライバー」:「ブリッジ」、 「IPv6を有効にする」:false、 「IPAM」: { "ドライバー": "デフォルト", 「オプション」: {}, 「設定」: [ { 「サブネット」: 「192.168.0.0/16」 } ] }, 「内部」:偽、 「接続可能」: false、 「イングレス」:偽、 "設定元": { 「ネットワーク」: 「」 }, "ConfigOnly": false、 "Containers": { # 現時点では、このネットワークに次の 2 つのコンテナが追加されていることがわかりました "180fbc8b04627762a896d8a85d8cb67063c01a0f3ad8a11352ab4695b022c272": { 「名前」: 「mybusy」、 "エンドポイントID": "12929182af47e619e3405cab9981ea1671a2bc31f77d3aa589ebcf2c912c12bc", "Macアドレス": "02:42:c0:a8:00:02", "IPv4アドレス": "192.168.0.2/16", "IPv6アドレス": "" }, "3c08d592537a9593c960c9664b4724521658f26be7b658a6483e6fbfe30b58a7": { "名前": "mybusy02", "エンドポイントID": "61b08372535d751cee726fc01d4e300390e2a090dba20f1d21ba96385a7a621e", "Macアドレス": "02:42:c0:a8:00:03", "IPv4アドレス": "192.168.0.3/16", "IPv6アドレス": "" } }, 「オプション」: {}, 「ラベル」: {} } ] 質問する異なるネットワーク構成のコンテナを相互接続できますか? 答えはイエスです。 docker network connect コマンドを使用できます。手順は次のとおりです。 # まず、現在同じネットワークに存在する 2 つのコンテナ mybusy と mybusy02 を確認します $root@VM-8-11-ubuntu:~# docker ps -a コンテナID イメージ コマンド 作成ステータス ポート名 3c08d592537a busybox "sh" 8 分前 8 分前 mybusy02 180fbc8b0462 busybox "sh" 8 分前 8 分前 mybusy # デフォルトネットワークにmybusy03を作成する $root@VM-8-11-ubuntu:~# docker run -it --name mybusy03 -d busybox a95b57c96f400ed44efffcc938bccce15830fa1ab5b55716261e4588c14429cb # 現在のコンテナを表示する $root@VM-8-11-ubuntu:~# docker ps コンテナID イメージ コマンド 作成ステータス ポート名 a95b57c96f40 busybox "sh" 21秒前 21秒前 mybusy03 3c08d592537a busybox "sh" 8 分前 8 分前 mybusy02 180fbc8b0462 busybox "sh" 9 分前 9 分前 mybusy # mybusy から mybusy03 に ping を試みると、同じネットワーク上にないため ping が機能しないことがわかります。$root@VM-8-11-ubuntu:~# docker exec -it mybusy ping mybusy03 ping: 不正なアドレス 'mybusy03' # ここで、docker network connect --help コマンドを実行して、$root@VM-8-11-ubuntu:~# docker network connect --help を確認します。 使用方法: docker network connect [オプション] ネットワークコンテナ コンテナをネットワークに接続する オプション: --alias strings コンテナのネットワークスコープエイリアスを追加します --driver-opt 文字列 ネットワークのドライバーオプション --ip 文字列 IPv4 アドレス (例: 172.30.100.104) --ip6 文字列 IPv6 アドレス (例: 2001:db8::33) --link list 別のコンテナへのリンクを追加する --link-local-ip strings コンテナのリンクローカルアドレスを追加します # mybusy03 を my-net ネットワークに追加します $root@VM-8-11-ubuntu:~# docker network connect my-net mybusy03 # その後、再度 ping を実行して、動作していることを確認します。すごいと思いませんか? $root@VM-8-11-ubuntu:~# docker exec -it mybusy ping mybusy03 PING mybusy03 (192.168.0.4): 56 データバイト 192.168.0.4 からの 64 バイト: seq=0 ttl=64 time=0.197 ms 192.168.0.4 からの 64 バイト: seq=1 ttl=64 time=0.087 ms このとき、ネットワークを確認すると、mybusy03 が my-net に追加されていたことがわかりました。したがって、正常に ping を実行できます。 Dockerカスタムネットワークコンテナ相互接続に関するこの記事はこれで終わりです。Dockerコンテナ相互接続に関するその他の関連コンテンツについては、123WORDPRESS.COMの以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも123WORDPRESS.COMをよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: HTML の基本 - ハイパーリンク スタイルを設定する簡単な例
>>: MySQL データベースの手動およびスケジュールされたバックアップ手順
序文JS の this ポインターは、初心者にとって常に頭痛の種でした。今日は、これが地面に落ちたと...
<br />前の記事:Webデザインチュートリアル(5):Webビジュアルデザイン。 1...
この記事では、簡単なドラッグ効果を実現するためのjsの具体的なコードを参考までに共有します。具体的な...
序文まず、高性能サーバーの高可用性またはホットスタンバイソリューションである Keepalived ...
この記事では、セキュリティ、使用方法、同時処理などを通じて、MySQL トランザクションとデータの一...
2級コンピュータ試験のMySQL知識ポイントの基礎、一般的なMYSQLコマンドは次のとおりです。よく...
バックエンド プログラマーとして、フロントエンドのものをいじらなければならないこともあります。そこで...
この記事では、シンプルなカレンダー効果を実現するためのJavaScriptの具体的なコードを参考まで...
この記事では、docker 経由で Jenkins+Maven+SVN+Tomcat をデプロイし、...
1. 概要Redis Cluster は、Redis ノードのグループ間での高可用性とシャーディング...
2048ミニゲーム、参考までに具体的な内容は以下のとおりですまず、2048ゲームは16のグリッドか...
序文この記事は主にMySQL起動エラー2002の分析と解決方法を紹介しています。参考と勉強のために共...
次に、2 つのテーブルを作成し、一連の SQL 文を実行します。SQL 文の実行後にテーブル内のデー...
もしかしたら私の考え方が間違っていたのかもしれないし、問題の説明が少し乱雑だったのかもしれないが、こ...
フロントエンド Web エンジニアとして、ページ効果を作成するときに次の現象に遭遇したことがあるはず...