LoginSignup
0
0

More than 1 year has passed since last update.

colimaでreplicas>=2なdocker serviceにMac側から接続する方法

Posted at

以前はできていたような気もするのですがMacOSがventuraになってからQEMUとの相性が良くないらしく、colima上でlistenされているポートにMacOS側からアクセスするにはdocker serviceを--publish mode=hostで起動する必要があります。

これには罠があって、mode=hostなサービスは各docker node内にレプリカ数が1つまでしかlistenするポートが競合して起動しません。Swarmクラスタを構成してノード数を増やせば一応回避できそうですが、これまたventureになってから上手く動かないようです。おのれ、ventura...

で、現状colimaで複数のレプリカを動かすにはMac側から直接接続することは諦めてmode=ingressで起動するしかないのですが、直接接続がだめならproxyを介して間接的に接続してやればokです。例えば以下のようにalpine/socatを使ってproxyサービスを立ち上げます。

docker service create --name amqv-proxy --network {your-network} \
  --publish mode=host,target={port-on-mac},published={port-on-mac} \
  alpine/socat tcp-listen:{port-on-mac},fork,reuseaddr tcp:{service-name}:{service-port}

proxyは一つあれば十分なのでポート番号の競合問題はおきません。あとは対象サービスに接続するつもりでMac側からproxyに接続すればokです。これでレプリカ数>=2な環境の検証ができますね

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