Kuzunoha-NEのブログ

プログラミングなどの勉強をしてます

DockerComposeでContainerのIPアドレスの固定化をするかー

こんばんは、葛の葉です。

久しぶりにDockerのことを書こうと思いました。

今回はDocker-ComposeでcontainerのIPアドレスを固定化を行いました。

        networks:
            aplication_net:
                ipv4_address: 172.19.x.x

DockerComposeで各コンテナの設定部分に上記の部分を記載すればよいです。

aplication_netはDockerNetworkの名称になります。

ipv4_address: 172.19.x.xは使用するIPアドレスです。


また、コンテナ間にDockerNetworkを構成する記述を行います。

networks:
    aplication_net:
        driver: bridge
        ipam:
            driver: default 
            config: 
            - subnet: 172.19.0.0/24

aplication_net:部分はDockerNetwork名を記載します。

subnet: 172.19.0.0/24は使用したいネットワークアドレスとそのサブネットマスクをプレフィックス長で記載します。

なお、cofig:下ではgateway:というプロパティ、デフォルトゲートウェイの設定もあるそうなのですか、v3では出来ないようです。

デフォルトゲートウェイがどういうIPアドレスであるかが不明なため、今回は172.19.0.1を想定しています。


docker-compose.ymlは以下の通りになります。

services:
    mysql:
        image: ./mysql
~~~~~~~~~~~中略~~~~~~~~~~~~~~~~~~
        networks:
            aplication_net:
                ipv4_address: 172.19.0.2

    app:
        build: ./app
~~~~~~~~~~~中略~~~~~~~~~~~~~~~~~~
        networks:
            aplication_net:
                ipv4_address: 172.19.0.3

    nginx:
        image: nginx
~~~~~~~~~~~中略~~~~~~~~~~~~~~~~~~
        networks:
            aplication_net:
                ipv4_address: 172.19.0.4

networks:
    aplication_net: 
        driver: bridge
        ipam:
            driver: default 
            config: 
            - subnet: 172.19.0.0/24

docker-compose upでコンテナを起動しましょう。

docker exec -it コンテナ名 /bin/bashでコンテナ内に入り、hostname -iIPアドレスを確認してみましょう。

root@xxxxxxxxxxxx:/# hostname -i
172.19.0.3 

IPアドレスが表示されました!