web-dev-qa-db-ja.com

プロファイル内のlxdタイプのコンテナ静的IP

Lxdコンテナに静的IPアドレスを設定しようとしています。コンテナは以下で作られています:

nonroot $ lxc起動画像:centos/7/AMD64 my_centos

かなりbogstandardのlxd(デフォルトのapt-get install lxd; service lxd start)環境で。今、私はそのことを静的IP 10.0.3.50(たとえば)にしたいと思います。

いくつかグーグルした後(なぜこれがサイトのドキュメントからはっきりしていないのか私にはまだはっきりしていません)、それを行うためにハッキングしなければならないプロファイル情報がsqliteデータベースにあることがわかりました。はい:

lxc profile copy default my_centos
lxc profile edit my_centos
...
name: my_centos 
  config: {} 
  description: "" 
  devices:   
    eth0:
      name: eth0
      nictype: bridged
      parent: lxcbr0
      type: nic

そしてそれは私にそれを変更させません:

name: my_centos
config: 
  raw.lxc: 
    lxc.network.type = veth
    lxc.network.name = eth0
    lxc.network.link = lxcbr0
    lxc.network.ipv4 = 10.0.3.50/24
    lxc.network.ipv4.gateway = 10.0.3.1
    lxc.network.flags = up

description: ""
devices:
  eth0:
    name: eth0
    nictype: bridged
    parent: lxcbr0
    type: nic

エラーは次のとおりです。構成解析エラー:インターフェイス固有のipv4/ipv6lxc.networkキーのみが許可されます

これはおそらくnictypeとeth0のタイプに関係していますが、デバイスを削除しても同じ効果があります。

誰かがこれを行う正しい方法で私を教えてもらえますか?

これは LXDコンテナと静的IPを使用したネットワーク に関連していますが、これをlxdで設定したいと思います(つまり、構成ファイルではなくプロファイルを使用します)。

3
Willem

静的IPを持つコンテナーが必要で、ローカルネットワーク上でそれらを表示したいという同様の問題がありました。

Lxdプロファイルを介してそれを行う方法を理解していません。ただし、静的IPを使用して単一のコンテナーを作成する手順は次のとおりです。次に、コンテナのクローンを作成し、/ etc/network/interfacesファイルでそのIPを変更するだけのスクリプトを記述して、静的IPを使用してコンテナを作成することができます。

手順は次のとおりです。

ホストマシンにブリッジを作成します。

編集:/ etc/network/interfaces

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
#auto eth0
#iface eth0 inet dhcp

auto br0
iface br0 inet static
    address 172.16.115.208
    broadcast 172.16.119.255
    netmask 255.255.248.0
    gateway 172.16.112.1
    bridge_ports eth0
    bridge_fd 9
    bridge_hello 2
    bridge_maxage 12
    bridge_stp off

IPアドレスを自分の値に置き換えます。

「bridge_ports」はeth0をブリッジに追加することに注意してください。

ネットワークを再起動します。

Sudo /etc/init.d/networking restart

新しい橋を立ち上げる:

Sudo ifup br0

この時点で、新しく作成されたブリッジを介したネットワーク接続がまだあるかどうかを確認する必要があります。

Lxcプロファイルを編集し、親を新しく作成されたブリッジとして設定します。

lxc profile edit default<or your container's profile name>

-       parent: lxcbr0
+       parent: br0

コンテナにアクセスし、静的IPアドレスを設定します。

lxc exec my-container-name /bin/bash
Sudo vim /etc/network/interfaces

    #auto eth0
    #iface eth0 inet dhcp

    auto eth0
    iface eth0 inet static
    address 172.16.115.252
    broadcast 172.16.119.255
    netmask 255.255.248.0
    gateway 172.16.112.1

繰り返しますが、それに応じてIPアドレスを変更します。コンテナを再起動し、新しいIPが割り当てられているかどうかを確認します。

lxc info my-container-name

これで、コンテナに静的IPが割り当てられ、ネットワーク上に表示されます。これで、クローンを作成し、インターフェイスファイルのIP値を変更して、静的IPが異なる複数のコンテナーを取得するスクリプトを作成できます。

3
jahackbeth

外部dnsmasq構成ファイルを追加することにより、lxd-bridgeに静的IPアドレスを割り当てさせることができます。

/ etc/default/lxd-bridgeを開くと、追加する場所が見つかります。

LXD_CONFILE = ""

そこにファイル名を挿入します。 lxd_dnsmasq.confのようなもの。好きな名前を付けることができます。

次に、ファイルを作成し、コンテナごとにこのようなエントリを追加します。

dhcp-Host = containername、ipaddress

これを設定するための詳細な手順へのリンクは次のとおりです。 lxd static ip addresss

2
Jason Trickett