ネットワーク使用チュートリアル 公式サイト docker-compose.yml リファレンスドキュメント: Compose ファイルバージョン 3 リファレンス より正確な中国語翻訳: Compose ファイル バージョン 3 リファレンス ネットワークは通常、クラスター サービスに使用され、異なるアプリケーションを同じネットワーク内で実行できるため、ネットワーク分離の問題が解決されます。このアプリケーションは、スウォーム展開では非常に一般的です。ただし、この記事ではこれについては説明しません。 一般的に、クラスター サービスの場合、アプリケーション サービスを迅速にオーケストレーションおよびデプロイするために、docker-compose.yml ドキュメントがよく使用されます。公式サイトでは、次のような使用シナリオと方法が紹介されています。 1. 明示的なネットワーク宣言のない docker-compose.yml たとえば、次の内容を含む docker-compose.yml を バージョン: '3' サービス: ウェブ: イメージ: nginx:最新 コンテナ名: ウェブ 依存: -db ポート: - 「9090:80」 リンク: -db デシベル: 画像: mysql コンテナ名: db1234567891011121314
$ dockerネットワークls ネットワーク ID 名前 ドライバー スコープ 6f5d9bc0b0a0 app_default ブリッジ ローカル 0fb4027b4f6d ブリッジ ブリッジ ローカル 567f333b9de8 docker-compose_default ブリッジ ローカル bb346324162a ホスト ホスト ローカル a4de711f6915 mysql_app ブリッジ ローカル f6c79184ed27 mysql_default ブリッジ ローカル 6358d9d60e8a なし null ローカル 12345678910 2. networksキーワードはカスタムネットワークを指定する たとえば、次の docker-compose.yml ファイルは、フロント ネットワークとバック ネットワークを定義し、ネットワーク分離を実装します。プロキシと DB はアプリ経由でのみ通信できます。このうち、 バージョン: '3' サービス: プロキシ: ビルド: ./proxy ネットワーク: - フロント アプリ: ビルド: ./app ネットワーク: - フロント - 戻る デシベル: 画像: postgres ネットワーク: - 戻る ネットワーク: フロント: # カスタムドライバーを使用する ドライバー: カスタムドライバー 1 戻る: # 特別なオプションを取るカスタムドライバーを使用する ドライバー: カスタムドライバー2 ドライバーオプション: : "1" バー: "2"123456789101112131415161718192021222324252627 ここで、back と front という 2 つのネットワークが定義されていることに注目してください。それらの名前は back と font として定義されているようですが、 3. デフォルトネットワークを構成する バージョン: '2' サービス: ウェブ: 建てる: 。 ポート: - 「8000:8000」 デシベル: 画像: postgres ネットワーク: デフォルト: # カスタムドライバーを使用する ドライバー: custom-driver-11234567891011121314 4. 既存のネットワークを使用する ネットワーク: デフォルト: 外部の: 名前: my-pre-existing-network1234 発生した問題 上記を学んだ後、著者は自分のプロジェクトを実践する準備が整いました。私のプロジェクトには 2 つの docker-compose.yml ファイルが含まれており、 その中で、docker-compose.yml は、 バージョン: "3" サービス: データベースマスター: イメージ: master/mysql:最新 コンテナ名: dbmaster ポート: - 「3308:3306」 ボリューム: - $HOME/Work/data/dbmaster:/var/lib/mysql 環境: MYSQL_ROOT_PASSWORD: マスター ログ記録: ドライバー: "json-file" オプション: 最大サイズ: "1000k" 最大ファイル数: "20" ネットワーク: - アプリ dbスレーブ: イメージ: スレーブ/mysql:最新 コンテナ名: dbslave ポート: - 「3309:3306」 依存: -dbマスター ボリューム: - $HOME/Work/data/dbslave:/var/lib/mysql 環境: MYSQL_ROOT_PASSWORD: スレーブ ログ記録: ドライバー: "json-file" オプション: 最大サイズ: "1000k" 最大ファイル数: "20" リンク: -dbマスター ネットワーク: - アプリ ネットワーク: デフォルト: 外部の: 名前: app12345678910111213141516171819202122232425262728293031323334353637383940414243 別の docker-compose.yml は、 バージョン: "3" サービス: ウェブ: 画像: nginx:最新 コンテナ名: ウェブ 依存: -クラウドゴー ポート: - 「9090:80」 ボリューム: - $HOME/Work/docker/docker-compose/nginx/conf.d:/etc/nginx/conf.d リンク: -クラウドゴット ログ記録: ドライバー: "json-file" オプション: 最大サイズ: "1000k" 最大ファイル数: "20" ネットワーク: - アプリ クラウドゴー: 画像: cloudgo:最新 コンテナ名: cloudgo ポート: - 「8080:8080」 ログ記録: ドライバー: "json-file" オプション: 最大サイズ: "1000k" 最大ファイル数: "20" 外部リンク: -dbマスター -dbスレーブ ネットワーク: - アプリ ネットワーク: アプリ: 外部: true123456789101112131415161718192021222324252627282930313233343536373839 事前に作成されたネットワークを使用し、それらをこの既に作成されたネットワークに参加させて通信を可能にすることにしました。これを実行するには、次のコマンドを実行しました。 $ dockerネットワークapp1を作成します その後、準備した docker-compose.yml ファイルの実行を開始します。まず設定ファイルを実行して mysql を起動すると、結果は次のようになります。 $ docker-compose を起動します エラー: サービス「dbmaster」は未定義のネットワーク「app」12 を使用しています 作成されましたが、ネットワークが未定義であるというエラーが報告されます。名前を mysql_app に変更してみましたが、同じエラー メッセージが表示されます。最終的に、このアプローチは実行不可能であることが証明され、現在まで公式文書には例は見つかりませんでした。 したがって、最終的に、最初の docker-compose.yml ファイルのネットワーク構成を次のように変更することが決定されました。 ネットワーク: mysql_app: ドライバー: bridge123 後で使用するために、このファイルでネットワークを定義します。ここで変更は完了です。ネットワークが参照されるファイル内の他の場所でも同じ変更を行う必要があります。同様に、2 番目のファイルについても同様です。 その他の用途 リンクの代わりにエイリアスを使用する 一般的な使用形式は次のとおりです。 サービス: いくつかのサービス: ネットワーク: 何らかのネットワーク: エイリアス: -エイリアス1 -エイリアス3 その他のネットワーク: エイリアス: -エイリアス212345678910 次の例では、 バージョン: '2' サービス: ウェブ: 依存: - 労働者 ネットワーク: - 新しい ワーカー: 依存: -db ネットワーク: - 遺産 デシベル: 画像: mysql ネットワーク: 新しい: エイリアス: - データベース 遺産: エイリアス: -MySQLについて ネットワーク: 新しい: レガシー:123456789101112131415161718192021222324252627 現時点では、depends_on を直接使用する場合、リンクは不要になりました。ワーカーが DB にアクセスする必要がある場合は、mysql:port を直接使用できます。 ネットワークを使用する際の重要なポイントは次のとおりです。 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: トランジションコンポーネントのアニメーション効果を使用した Vue サンプルコード
>>: MySQL5.6.31 winx64.zip インストールと設定のチュートリアル
Centos7.6 に Tomcat-8.5.39 をインストールする方法は次のとおりです。詳細は次...
目次1. ブール2. 表現3. マルチクラスパッケージ4. v-bind でクラス class を直...
CSS 3.0 とビデオを組み合わせて実現したクリエイティブなオープニングをご紹介します。効果は次の...
(?i) は大文字と小文字を区別しないことを意味します。大文字と小文字をすべて置き換えます。 htm...
目次1. redux とは何ですか? 2. 還元の原則3. redux の使い方は? (1)redu...
目次1. コンテナサービスの更新とDockerコンサルの検出1. サービス登録と検出とは何ですか? ...
目次1. ダウンロード2. インストールと解凍3. Tomcatを起動する4番目に、インストールが成...
序文Bash には、ls、cd、mv などの重要な組み込みコマンドが多数あるほか、grep、awk、...
目次親コンポーネントリストボックスリストコンポーネントボタンコンポーネント PageButton昨年...
PHP Linux に XML 拡張機能をインストールする1. PHPインストールソースパッケージを...
1.構文TIMESTAMPDIFF(unit,begin,end); 単位に従って時間差を返します。...
序文innodb_data_file_path は、innodb テーブルスペース ファイルを指定す...
目次シンプルファクトリーファクトリーメソッド安全な工場方法アブストラクトファクトリー要約するシンプル...
Linux には、マウントされたハードディスクとマウントされていないハードディスクの 2 種類のハー...
1. Nginx ロードバランシングの実装原理1. Nginxはリバースプロキシを通じて負荷分散を実...