✏️

Docker+Docker Composeでipアドレスを固定

2024/04/07に公開

はじめに

dockerやdocker composeを使うときは基本的にサービス名などを使ってアクセスすると思いますが、ふと固定IPを設定したくなったので調べたときの備忘録です。

設定

docker composeの場合はyaml内のネットワーク(ipam)設定とサービスのネットワークに設定すればよいそうです。

ネットワーク(ipam)の設定

下記の例は、docker環境内にサブネット192.168.0.0/24my-networkを作成するものです。
サブネットなどを設定したい場合は、ipamで指定します。

networks:
  my-network:
    ipam:
      driver: default
      config:
        - subnet: 192.168.0.0/24

サービスのネットワーク設定

compose環境内のコンテナで上記のネットワークを利用するため、networksセクションで下記のように記載します。
下記例では一例として`192.168.0.10を使うようにしています。

    networks:
      my-network:
        ipv4_address: 192.168.0.10

yamlの例

ネットワーク(ipam)とサービスのネットワークを設定したdocker-compose.yamlの例は下記のようになります。
ansible用とweb用のコンテナ2つを用意してそれぞれ192.168.0.10192.168.0.11を割り当てるようにしています。

services:
  ansible:
...
    networks:
      my-network:
        ipv4_address: 192.168.0.10
 ...
  web:
    restart: always
    networks:
      my-network:
        ipv4_address: 192.168.0.11
...
networks:
  my-network:
    ipam:
      driver: default
      config:
        - subnet: 192.168.0.0/24

参考

Discussion