やりたいこと
docker-compose up
ホストのネットワークの好きなIPアドレスを指定して立ち上げる
なんの意味があるの?
基本は不要でnginx-proxyやtreafikなどのサービスディスカバリを使うのが正しい方法だと思う。
とはいえ、それじゃできないまれな↓みたいなユースケースもあると思うので備忘録として残しておく。
- 社内インフラなどIPを固定にしたいとき
- IPをずらして、ポートのブッキングを回避したいとき
- 8080,8081,8082...みたく、どのポートが空いているのかバトルにならないように
やりかた
macvlan
のnetwork driverを使う。
docker-compose.yml
version: "3.8"
services:
web01:
image: nginx
networks:
macvlan:
ipv4_address: 192.168.1.10
# ports
# - "80:80" dockerのhostネットワークみたく、指定したIPでポートが全開放なので基本は不要
...etc
web01:
image: nginx
networks:
macvlan:
ipv4_address: 192.168.1.20
# ports
# - "80:80" IPが違うのでポートがブッキングしない
...etc
...etc
networks:
macvlan:
driver: macvlan
driver_opts:
parent: eno1 # 端末のネットワーク・インターフェースを指定する
ipam:
config:
- subnet: 192.168.1.0/24
gateway: 192.168.1.1