20

私はそのような docker-compose.yml を持っています (ここに完全なリストはありません):

version: '2'

services:

  nginx:
    build: ./nginx/
    ports:
      - 8080:80
    links:
      - php
    volumes_from:
      - app
    networks:
      app_subnet:
        ipv4_address: 172.16.1.3

  php:
    build: ./php/
    expose:
      - 9000
    volumes_from:
      - app
    networks:
      app_subnet:
        ipv4_address: 172.16.1.4

    networks:
      app_subnet:
        driver: bridge
        ipam:
        config:
          - subnet: 172.16.1.0/24
          gateway: 172.16.1.1

docker-compose upこのようなエラーが発生した後:

ユーザー指定の IP アドレスは、ユーザーが構成したサブネットを持つネットワークに接続する場合にのみサポートされます

だから私はサブネットを作成していますdocker network create --gateway 172.16.1.1 --subnet 172.16.1.0/24 app_subnet

しかし、docker-compose はその場で dev_app_subnet という名前のサブネットを作成するため、これでは問題は解決しません。私のサブネットは使用されていません - 同じエラーが発生しています。これを行う主な目的は、nginx サービスに静的 IP を割り当てることです。プロジェクトの Web URL を etc/hosts ファイルから開きます。

4

5 に答える 5

30

【解決済み】解決策を見つけました。ネットワークを指すときは、フラグ「external」を使用して、ネットワークが既に作成されており、外部に持ち出す必要があることを Compose に伝える必要があります (そうしないと、プロジェクト プレフィックスを使用してオンザフライで作成されます)。

networks:
  app_subnet:
    external: true

そのため、docker-compose はコンテナーを既存のコンテナーにアタッチした後app_subnet 、サブネットを作成する必要があります。

docker network create --gateway 172.16.1.1 --subnet 172.16.1.0/24 app_subnet
于 2016-10-17T12:21:59.760 に答える
6

前回のスクリプトの実行で、ネットワーク インターフェイスが既に作成されていた可能性がありますが、サブネット パラメータはありません。

それを修正するために実行します

docker network ls -a

サービスの作成をブロックしているネットワークを削除します

docker network rm <network interface id> 
于 2020-04-10T10:56:01.223 に答える
0

具体的には、docker stack deploy を使用して swarm クラスターをデプロイしている場合です。また、サブネットのスコープを「swarm」として指定する必要があります。

docker network create --gateway 172.16.1.1 --subnet 172.16.1.0/24 --scope swarm app_subnet

docker-compose.yml で、外部ネットワークを次のように指定する必要があります。

ネットワーク: デフォルト: 外部: 名前: etl_subnet

デフォルトとして使用します。

于 2017-07-15T08:54:31.157 に答える