みつきんのメモ

組み込みエンジニアです。Interface誌で「Yocto Projectではじめる 組み込みLinux開発入門」連載中

LXDコンテナをホストのネットワークにぶら下げる

はじめに

実験的にコンテナ上にサーバを立てて潰すという作業はよく発生する。 このサーバが、ホストのネットワーク上に単一のマシンとして見えているのが望ましいが 毎度、このあたりの作業が面倒くさい。

ホストにブリッジインターフェースを作成し、それを参照するようなprofileを作成することで、LXDコンテナをホストネットワークにぶら下げることができるのでまとめる。

手順

ホストのNICがenp3s0の場合とする。

  1. ホストPCにブリッジインターフェース(br0)を作成
  2. ブリッジインターフェースに、ホストのNIC(enp3s0)を追加
  3. LXDにブリッジ用プロファイル(bridge)を作成
  4. bridgeプロファイルで、br0にLXDコンテナのNIC(eth0)を追加
  5. LXDコンテナ作成時にbridgeプロファイルを適用

ブリッジインターフェースの作成

下記手順に相当。

  • ホストPCにブリッジインターフェース(br0)を作成
  • ブリッジインターフェースに、ホストのNIC(enp3s0)を追加

/etc/netplan/10-bridge.yamlを下記の内容で作成する。

network:
  version: 2
  renderer: NetworkManager
  ethernets:
    enp3s0:
      dhcp4: no
  bridges:
    br0:
      interfaces:
        - enp3s0
      dhcp4: yes
      parameters:
        forward-delay: 0
        stp: no
      optional: true

設定を反映する。

$ sudo netplan apply

LXDコンテナプロファイルの作成

下記手順に相当。

  • LXDにブリッジ用プロファイル(bridge)を作成
  • bridgeプロファイルで、br0にLXDコンテナのNIC(eth0)を追加
$ lxc profile create bridge
$ lxc network attach-profile br0 bridge eth0
$ lxc profile device add bridge root disk path=/ pool=default

コンテナの作成

下記手順に相当。

  • LXDコンテナ作成時にbridgeプロファイルを適用

以降は、bridgeプロファイルを指定してLXDコンテナを作成すると、そのコンテナはホストネットワークにぶら下がることになる。

$ lxc launch ubuntu:20.04 ${CONTAINER} --profile=bridge

export CONTAINER=hawkBit lxc launch ubuntu:20.04 ${CONTAINER} --profile=bridge

まとめ

一度設定するとそれっきりになり、忘れてしまうため備忘録。

参考