0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Dockerのコンテナ同士をネットワーク接続できるようにする

Last updated at Posted at 2021-01-02

初めに

docker composeで同時に作らなくても、後からコンテナ同士をネットワーク接続できる方法

以下のような状況と仮定して

  • mysqlのコンテナdb-mysql と php のコンテナ app-php のコンテナがあると仮定する
  • app-php のコンテナから、db-mysql DB接続したい
  • 各コンテナは別々で管理(作成)されている
  • wslのように、ローカル端末を使っている

特定コンテナの所属ネットワークグループを調査

docker inspect --format '{{ .NetworkSettings.Networks }}' [コンテナ名]
  • 実行例
docker inspect --format '{{ .NetworkSettings.Networks }}' db-mysql
# map[mysql_default:0xc000548000]
# 上記のような実行結果が出る

このような場合、db-mysqlコンテナの属するネットワークグループはmysql_defaultになる

コンテナにネットワークグループを追加

docker network connect [ネットワークグループ] [コンテナ名]
  • 実行例
docker network connect mysql_default app-php

上記のようにコマンドを実行すると、app-phpのコンテナ内から、ホストに db-mysql を指定すると、接続することができる。
こうすることで、composeで作成した時と同じように名称でIP引用できる仕組みになる。
本来は expose のように、コンテナからしか接続できない仕組みにしたいときに使うのが一般的ではあるのでしょうが、ローカルの時はこんな風にやってしまってもよいのかと。

  • 確認例
# コンテナ内に入る
docker exec -ti app-php bash
# 疎通確認
curl db-mysql:3306

最後に

過去記事をシナリオベースに改編。。。
ホストからコンテナにはlocalhostでつなげるが、コンテナ同士はlocalhostでつなげない。これ大事。
ちなみに、Linuxのようなサーバー上ではホストのLANのIPを指定すると問題なくつながるので、そんなやり方でもよいのでしょうが、、

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?