私のホストはSLES12ですVM ESXサーバーで実行されています。VMホストには、ESXで実行されているDHCPサーバーからDHCPIPを取得するインターフェイスがあります。
Dockerコンテナ(Dockerイメージ:openSUSE)でNFSサーバーを実行しているため、外部アクセスが必要です。 コンテナがESXで実行されているdhcpサーバーからdhcp IPを取得するようにします(ホストVMが取得するのと同じように)。
pipework を試しましたが、動作しませんでした。これが私がしたことです:
ESXでプロミスキャスモードを有効にしました。新しいブリッジ(br1)を作成し、
ホストインターフェースeth0に接続しました。
パイプワークを使用して、このコマンドpipework br1 $CONTAINERID 0/0
を使用してIPアドレスを持つDockerコンテナーに新しいインターフェース(eth1)を追加しました
コマンドpipework eth1 $CONTAINERID dhclient
を使用して、コンテナーの新しいインターフェイス(eth1)にDHCPIPを割り当てようとした後
しかし、以下のエラーが発生しました:RTNETLINK answers: File exists
これを解決するために、コンテナー内のeth1デバイスをフラッシュし、コマンドを再度実行しました。 Dockerデーモンがクラッシュしたことを確認しました。 Dockerバージョン:1.12.3(クライアントとサーバーの両方)。
ここで私が欠けているものを教えてください。コンテナのインターフェイスで、ESXで実行されているDHCPサーバーからDHCPIPを取得する必要があります。
Macvlanまたはipvlanドライバーを使用してDockerネットワークを作成する必要があります。次に、DHCP IPAMドライバーを使用する必要があります(IPAMはIPアドレス管理の略です)。
これは、同様のことを行う方法の説明を含む要点です: https://Gist.github.com/nerdalert/3d2b891d41e0fa8d688c