薄荷兎のメモ
Posts

コンテナにホストと同じネットワークのプライベートIPアドレスを設定するメモ

何がしたかったのか

コンテナでAdGuardを構築しようと思ったところ、ホストPCですでに稼働しているnginxやDNSとポートが衝突してしまった。
コンテナにLAN内からアクセスできるIPアドレスを振れば解決できるのではないか?と考えた

レシピ

compose.ymlのnetworksセクションでdriverにmacvlanを使用する

services:
  nginx:
    image: nginx:latest
    ports:
      - "80:80"
    networks:
      ipvlan_test:
        ipv4_address: 192.168.10.xxx # 固定するIPアドレス
networks:
  ipvlan_test:
    driver: macvlan
    driver_opts:
      parent: eth0 # ホストPCのNICを指定
    ipam:
      config:
        - subnet: 192.168.10.0/24 # サブネットアドレスを指定
          gateway: 192.168.10.1 # ゲートウェイアドレスを指定

注意点としては、サービス側に個別にIPアドレスを振ってあげる必要がありそう(未検証
固定IPアドレスを指定せずでもdocker compose up自体はできたが、ルーターからDHCPでアドレスは取得していないっぽい。
同一ネットワーク内で重複したIPが振られる可能性があるので、ルーターのDHCP除外範囲設定をしてcompose.yml側で除外済みのIPに固定してあげる必要がありそう。

参考

  • https://docs.docker.com/engine/network/drivers/macvlan/
© 薄荷兎のメモ 2025