はじめに
実験的にコンテナ上にサーバを立てて潰すという作業はよく発生する。 このサーバが、ホストのネットワーク上に単一のマシンとして見えているのが望ましいが 毎度、このあたりの作業が面倒くさい。
ホストにブリッジインターフェースを作成し、それを参照するようなprofileを作成することで、LXDコンテナをホストネットワークにぶら下げることができるのでまとめる。
手順
ホストのNICがenp3s0の場合とする。
- ホストPCにブリッジインターフェース(br0)を作成
- ブリッジインターフェースに、ホストのNIC(enp3s0)を追加
- LXDにブリッジ用プロファイル(bridge)を作成
- bridgeプロファイルで、br0にLXDコンテナのNIC(eth0)を追加
- 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
まとめ
一度設定するとそれっきりになり、忘れてしまうため備忘録。