LoginSignup
8
3

More than 1 year has passed since last update.

背景

Docker Desktopを3.4.0にバージョンアップ後、コンテナ間で通信ができなくなったので調査。

docker network で独自のnetworkを作成し、

docker network create \
  --driver=bridge \
  --subnet=10.100.0.0/12 \
  --gateway=10.100.0.1 \
hogenetwork

docker-compose.ymlには以下のように記述して固定IPを付与している。

services:
  app:
    image: hogeimage:latest
    hostname: hoge
    networks:
      hogenetwork:
        ipv4_address: 10.100.6.11

普段はこれで10.100.6.11のIPアドレスでコンテナが動くのだが、なぜか
コンテナのIPが10.96.0.1になっていた。

$ docker exec -it hoge bash
bash-4.2# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
    link/ipip 0.0.0.0 brd 0.0.0.0
3: ip6tnl0@NONE: <NOARP> mtu 1452 qdisc noop state DOWN group default qlen 1000
    link/tunnel6 :: brd ::
54: eth0@if55: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 02:42:0a:60:00:01 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 10.96.0.1/12 brd 10.111.255.255 scope global eth0
       valid_lft forever preferred_lft forever
bash-4.2#

原因

Docker Desktop 3.4.0がリリースされ、Compose V2 betaが使えるようになった。

$ docker-compose --version
Docker Compose version 2.0.0-beta.3

ところが、Compose V2 で起動すると、defaultのネットワークが勝手に作成され、そのネットワークのIPが割り当てられてしまう様子。

$ docker-compose up -d
...
Network hoge_default  Creating
Network hoge_default  Created
...

対応

Compose V2の書式に対応すれば治りそうだが、まだbeta版なので今は対応しないことにした。

V2を無効にするコマンドがあったので、それで対応。

$ docker-compose disable-v2

参考

8
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
3