docker PXEサーバーが失敗しました。すでにルート化されていても、ルートが必要なiptablesを初期化することはできません。

docker PXEサーバーが失敗しました。すでにルート化されていても、ルートが必要なiptablesを初期化することはできません。

マルチノードミニクラスタの制御ノードにPXEブートサーバーを設定し、各ノードをdocker swarmに接続しようとしています。このウェブサイト(https://jpetazzo.github.io/2013/12/07/pxe-netboot-docker/)、コマンドをrootとして実行しますdocker run jpetazzo/pxeが、dockerコンテナはrootを使用しているにもかかわらずrootを使用しないことを伝えます。

root@debian:/home/anthony# docker run jpetazzo/pxe
Setting up iptables...
iptables v1.4.21: can't initialize iptables table `nat': Permission denied (you must be root)
Perhaps iptables or your kernel needs to be upgraded.

この問題をどのように解決するのですか? PXEブートサーバーを設定するより良い簡単な方法はありますか?

編集:私は最新バージョンのDebianとDockerを使用しています。

答え1

~から読む.mdファイルを実行する必要があります。

  • PXECID=$(docker run --cap-add NET_ADMIN -d pxe) を使用してコンテナを実行します。
  • ./pipework br0 $PXECID 192.168.242.1/24 を使用して追加のネットワークインターフェイスを提供します。
  • コンピュータに接続されているネットワークインターフェイスを同じブリッジに配置します(例:brctl addif br0 eth0)(存在する場合は、eth0 IPアドレスをbr0に移動することを忘れないでください)。

つまり、DockerコンテナにはホストシステムにNET_ADMINが必要です。

関連情報