2017-02-16 10 views
1

ドッカー・コンテナのサブネット用にカスタムIPプールを設定したいと考えました。このために私は、これはドッカデーモンを停止し、その後docker0インターフェイスを削除し、docker0仮想ブリッジインターフェイスを再作成するカスタムNETWORKIDドッキング・ブリッジのIPアドレス・プールを変更する

systemctl stop docker 
ip link del docker0 

使用済みのNetworkManagerで再作成し、中にそれを回しました。

[email protected] ~> nmcli con up <UID> 
[email protected] ~> ip addr 
111: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000 
    link/ether 3e:ff:1b:ce:e4:a4 brd ff:ff:ff:ff:ff:ff 
    inet 172.20.0.1/20 brd 172.20.15.255 scope global docker0 
     valid_lft forever preferred_lft forever 

今、私は再びドッキングウィンドウデーモンを起動したときに、

[email protected] ~> systemctl start docker 
[email protected] ~> ip addr 
111: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000 
    link/ether 3e:ff:1b:ce:e4:a4 brd ff:ff:ff:ff:ff:ff 
    inet 172.17.0.1/16 scope global docker0 
     valid_lft forever preferred_lft forever 

私が設定したサブネットが172.20.0.1/20ですが、すぐに私はドッカデーモンを起動すると、docker0インタフェースのサブネットが172.17.0.1/16に変更されます。 LANに私がアクセスしたいプライベートIPがいくつかあります。それはそのサブネットにあります。

ブリッジインターフェイスを構成するより良い方法はありますか?

答えて

0

特定のブリッジコンテナネットワークを作成すると、このコマンドを使用してIPアドレスを定義できるはずです。 documentationは良いエントリーポイントです。

$ docker network create --driver bridge --subnet 172.20.0.1/20 subnet 
$ docker run --name app --network subnet <container> 

すべてのコンテナに、選択したサブネット内のIPアドレスが設定されているはずです。

さらに、official docには、独自のブリッジ接続を作成する方法が記載されています。

1

ジョーダンの答えは、サブネットワークを作成し、サブネットワークを作成して、コンテナでアプリケーションを実行しているときに指定します。これは、コンテナの実行中に使用されるIPプールを制限するのに役立ちます。

ただし、ドッカーデーモンによって作成されたdocker0仮想ブリッジインターフェイスのIPプールを制限することは役に立ちません。私が探していた答えは次のとおりです。

Dockerはコンテナを管理するデーモンを実行します。このデーモンはデフォルトで172.17.0.1/16サブネットを使用するように構成されたインターフェイスdocker0を作成します。したがって、目的のサブネットを使用するようにデーモンを設定する必要があります。

dockerdは、ドッカーデーモンを実行するために使用されます。それは--bidブリッジIDオプションがあります。 dockerd

dockerd --bid=172.20.0.1/20 

しかしほとんどのシステムは、これを達成するためにそれぞれのサービスマネージャを使用してドッカーを実行します。そのような場合、ドッカーは/etc/docker/daemon.jsonにドッカーデーモン設定ファイルを持っています。 Docker linux daemon configuration daemon.jsonがまだ存在しない場合は作成し、bipを追加します。

{ 
    "bip":"172.30.0.1/20" 
} 
0

docker0ブリッジのサブネットを変更すると、同じままです。 特定のIP目的のために、新しいネットワーク作成を使用してください。 ドッカーネットワークの作成--subnet = 172.20.0.1/20 foo そのネットワーク内のコンテナを実行した後。 docker run -itd -net foo image_name コンテナに特定のIPを与えたいとします。 docker run -itd --net foo --ip 172.20.0を使用してください。12画像名

関連する問題