Podmanのネットワーク設定が足りなかった話

今日も今日とてPodmanでございます。
なんでここまでPodmanにこだわるかと言いますと、実は今月中にこのサーバ(このブログが動いているサーバ)の引越しをすることになりまして。主な理由はCentOS7からCentOS8に移行したいということなんですが、それじゃあせっかくだから今動いてるWebサーバやら何やらを全部Podmanで動かしてみたい! というミーハーな展開でひたすらPodmanと格闘し続けているわけなのでございます。

で、今日のネタはPodmanのネットワーク設定(podman network create で設定するパラメータ)のことです。
まず、以下のコマンドでネットワークを作成します。

$ sudo podman network create --subnet 192.168.100.0/24 --gateway 192.168.100.1 network_1

で、このネットワークに紐付けてPodを作成します。

$ sudo podman pod create -p 80:80 -p 443:443 --network=network_1 --name web-engine

そして、このPodの中でコンテナを動かしたい、と以下のコマンドを叩きます。

$ sudo podman run -d \
  -v /etc/php:/usr/local/etc \
  -v /home/virtual:/var/www/html \
  --name php-fpm \
  --pod web-engine \
  localhost/php-fpm:my_latest

そうしますと、こんなエラーが出てがっくりするわけです。

ERRO[0000] Error adding network: failed to allocate for range 0: 192.168.100.2 has been allocated to 61aca01cbe4498ea849f47b326d9abb74831100fcb390aa596048ce9550335d, duplicate allocation is not allowed

「192.168.100.2はもう使ってるからダメだよーん」的なエラーです。
ネットワークを設定した時に/24でサブネット切ったんだから、他のアドレスを振ってくれればいいのに、なぜかそうしてくれません。

なんでだろうなぁ、と悩むこと小一時間。エラーメッセージを見返してみて、ふと気づきました。「range 0」。
これはもしかして・・・・・・と思って、改めて podman-network-create の man を読み直しました。すると、こんな項目が。

--ip-range
       Allocate container IP from a range.  The range must be a complete subnet and in
       CIDR notation.  The ip-range option must be used with a subnet option.

これだー!
というわけで、ネットワークを以下のように作り直しました。

$ sudo podman network create --subnet 192.168.100.0/24 --gateway 192.168.100.1 --ip-range 192.168.100.0/29 network_1

要するに、各コンテナに割り振れるIPアドレスの範囲を設定しなければならなかったわけです。
これで、あとは同じようにPodを作ってコンテナを起動・・・・・・できました! やった!

いやー、ここまで気づくのにえらい時間を食ってしまいました。Podmanのこういう細かいところについての情報はまだネットでも少なくて、もう自分でなんとかするしかないことばっかりです。こういうのを人柱というんでしょうかね。

ともあれ、この記事が他の誰かの助けになればこれ幸いでございます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください