marcoi
1
私は現在、すべてのDockerコンテナをNAS上で稼働させています。NASはそれらをうまく動かしてくれています。NAS上でdocker network CLIを使ってdockerネットワークを作成した際に、興味深い状況に気付きました。
docker network create -d qnet --opt=iface=bond0--ipam-driver=qnet --ipam-opt=iface=bond0 --subnet 192.168.1.0/23 --gateway 192.168.1.1 qnet-static-bond0-custom
上記のコマンドは、LAGでボンディングされた10GBネットワークを使ってdockerネットワークを作成します。その後、さまざまなDockerアプリケーションをこのネットワークに割り当てています。
問題は、このコマンドを実行すると、ボンディングされた10GBネットワークアダプタの下に仮想スイッチが作成され、その仮想スイッチがアダプタに割り当てられていたIP情報を引き継いでしまうことです。
この状態になると、NASのGUI上のネットワーク&スイッチアプリでアダプタ情報を変更できなくなります。元の状態に戻すには、dockerネットワークを削除し、仮想スイッチも削除するしかありません。
上記のコマンドは、eth0のような単一のアダプタに紐付ける場合は問題なく動作します。
これがネットワーク&スイッチアプリの制限なのか、単に非推奨の設定なのかは分かりません。ボンディングした10GBをDockerアプリのベースとして使えると便利なのですが、今のところは標準のeth0で運用しています。
同じようにQNAP NASでより複雑なdockerアプリを動かしている方の参考になればと思い、共有します。
NA9D
2
Container StationのGUIでこれを行うことはできませんか?私はいつも特定のコンテナで使用したいネットワークアダプターを選択しています。ボンディングされたアダプターも選択できるはずです。
marcoi
3
はい、シンプルなコンテナのプルデプロイを行う場合は通常のGUIを使うことができます。それは実際かなりうまく機能します。
しかし、より高度なネットワーク要件があるdocker composeファイルを使う場合は、ファイル内やコマンドライン経由でdockerネットワークを定義できます。私はこれでこの方法を知りました。dockerアプリ用に様々なネットワークパラメータを設定するためにネットワークを作成していました。
docker composeファイルでは、以下のように新しいdockerネットワーキングを追加することができます。
# appセクションの下に追加-
services:
app:
networks:
qnet-static-bond0-custom:
mac_address: xx:xx:xx:xx:xx:xx
ipv4_address: 192.168.1.112
#composeファイルの最後に追加
networks:
qnet-static-bond0-custom:
external: true
NA9D
4
はい、私もいくつかのYAMLスクリプトでそれを行っています。では、YAMLでボンディングされたポートを追加するのは正しく動作しないのでしょうか?
marcoi
5
私はbond0でセットアップを使うことができ、Dockerアプリも正常に動作します。ただ、ネットワークの設定がNASのGUIにあるNetwork&Switchアプリで正しく表示されず、後でアダプター設定を変更する必要がある場合に問題が発生します。DockerアプリもNetwork&Switchアプリ内でアダプターが見つからないという警告が表示されます。そのため、すべてが正常に動作するように、Dockerネットワーク作成時にはeth0を使うことにしており、これで期待通りに動作しています。
Networking&Switchの問題がそのバリエーションに対応したコーディングになっていないせいなのかは分かりません。
NAS自体はbond0構成をサポートしているものの、すべてのアプリが正しく利用できているわけではないようです。これまで何度もQNAPにbond0ネットワークの対応を修正するようチケットを出してきました。
ご意見ありがとうございます!こちらの内容は社内チームに共有し、調査・分析を行います。ありがとうございます!