ネットワーク使用チュートリアル 公式サイト 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 インストールと設定のチュートリアル
この記事の例では、簡単なショッピングカート機能を実現するためのjsの具体的なコードを参考までに共有し...
この記事では主に、フォント読み込みの最適化に関する一般的な戦略を紹介します。内容の大部分は参考資料と...
目次1 システムの紹介2 システムショートカット3 一般的なシステムコマンド1 システムの紹介 1....
最近、サーバーのストレステストを再度行う必要が出てきました。ここでは、最近学んだ見積もりスキームと見...
目次Node.js の公式紹介Node.jsのコア開発言語ウェブ上の JavaScript と No...
ul liの前のアイコン1をキャンセルしますクリア値1値を1に設定ラベル中央値1をクリアラベルの中央...
PHPの仕組みまず、よく耳にするcgi、php-cgi、fastcgi、php-fpmの関係を理解し...
1. セットアップを始める次のコード関数を簡単に紹介します。 ref 関数を使用して変数の変更を監視...
この記事では、参考までに、Vuex の具体的なコードを共有して、簡単なショッピングカートを実装します...
目次1. 実施プロセス2. オブザーバーを表示する3. ウォッチャーを実装する4. コンパイルを実装...
この記事では、マウス追従ゲームを実装するためのjsの具体的なコードを参考までに共有します。具体的な内...
商用データベースの場合、データベースのアップグレードは優先度が高く、バージョンアップのロードマップ、...
運用保守エンジニアは、初期段階では非常に大変な仕事です。この期間中、コンピューターの修理、ネットワー...
実際に参加したプロジェクトでは、MySQL テーブルのデータ量が数百万に達すると、通常の SQL ク...
目次ReactRouterV6 の変更1. <Switch> が <Routes&...