LoginSignup
8
7

More than 5 years have passed since last update.

docker[-compose]を複数IP環境で構築する

Last updated at Posted at 2017-12-11

80番ポートで複数台接続したく
複数IPもらってサーバ構築して苦労したので残しておきます。
社内の開発サーバで複数人でdockerを使う場合にお役に立てば

目指したもの(全て同一サーバ)

Ubutnu16.04にて
192.168.1.1:80(hostのeth 0)
→ docker 0[172.18.0.2 :80]へ接続される

192.168.1.2:80(hostのeth 0.1)
→ docker 1[172.19.0.2 :80]へ接続される

--net=hostで簡単にできると思ってました

なぜリバースプロキシを選ばなかったのか

jwilder/nginx-proxyを使えば簡単に実装できるが
ホスト名を各クライアントPCで登録するとか
野良DNSを構築したくなかった

isuueと日本語マニュアルにありました

ブリッジ・ドライバのオプション

オプション 同等 説明
com.docker.network.bridge.host_binding_ipv4 --ip コンテナのポートをバインドする時の、デフォルト IP アドレスを指定

docker-composeは2つファイルを用意しないといけないのかな。
networksを2つ同じファイルに書いて制御できる?

実行コマンド

docker network create\
 --driver=bridge\
 --subnet=172.18.0.0/16\
 --gateway=172.18.0.1\
 -o "com.docker.network.bridge.host_binding_ipv4"="192.168.1.1"
 -o "com.docker.network.bridge.name="docker1"\
 docker1

docker network create\
 --driver=bridge\
 --subnet=172.19.0.0/16\
 -o "com.docker.network.bridge.host_binding_ipv4"="192.168.1.2"
 -o "com.docker.network.bridge.name="docker2"\
 docker2

compose-file1

services:
  web1:
    ports:
      - "80:80"
networks:
  default:
    external:
      name: docker1

compose-file2

services:
  web2:
    ports:
      - "80:80"
networks:
  default:
    external:
      name: docker2

試したこと(結論は上です)

ports:
- "172.17.0.1:80:80"だけでは動作しない
dockerで同じNWをブリッジで作成し、NICにbrctlで紐付け→外部と繋がらない
dockerで同じNWをブリッジを作成し、NICに紐付けたbr0にbrctlで紐付け→brctlでエラー
docker network createで全部にgatewayを指定していたらエラーでできず

8
7
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
7