私が持っているもの:
GentooホストとUbuntuコンテナ。
私が望むもの:
コンテナをネットワークとホストに接続します。
私は何をしていますか:
ホストコンピュータにブリッジを作成し、ここにネットワークカードを追加しました。 NICのIPアドレスがブリッジに移動され、インターネットを正常に使用できるようになりました。その後、コンテナをsystemd-nspawn --network-bridge=my-bridge ...
。
私が得るもの:
コンテナ側では、host0
networkctlに従って設定されたインターフェイスを見ることができます。
root@scratch:~# networkctl
IDX LINK TYPE OPERATIONAL SETUP
1 lo loopback carrier unmanaged
2 sit0 sit off unmanaged
3 host0 ether degraded configuring
3つのインターフェイス(ブリッジ、NIC、およびvb-container)に対してWireshardを介してトラフィックをスニッフィングすると、ブリッジとvb-containerを介してDHCP DISCOVERが表示されますが、NICとACKは受信されません。
私が何を求めているの?
私は何を見逃していますか?コンテナにIPアドレスを割り当てるにはどうすればよいですか?
答え1
イメージ/ディレクトリがsystemd-networkdを使用している場合、これはすぐに機能します。そうでない場合は、ネットワーク内を調整するか、コンテナにホストネットワークのみを提供するデフォルト設定(no -n、--network-bridgeなど)を試す必要があるかもしれません。イメージがホストを上書きする可能性があるため、resolv.confまたはDNSを更新する必要があるかもしれません。
私の場合は、RHEL CentOS、Fedoraなどを使用しています。これらのディストリビューションはデフォルトでNetworkManagerを使用するため、最も簡単な方法はsystemd-nspawnにネットワークを指定しないことです。
また、ネットワークサポートのターゲットとして起動する必要があります。 systemd-nspawn自体はデフォルトの宛先のみを使用します。
systemd-nspawn -b [opts] systemd multi-user.target
この例は、提供されたターゲットを使用してsystemdを実行することから始まります。 Single.targetまたはデフォルト(graphical.target)を使用すると、混合結果を得ることができます。