マルチノードミニクラスタの制御ノードに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が必要です。