- appを突っ込んだcontainerからhostのpostgresqlへのアクセスをしたい
docker link
- すること: 環境変数の共有と/etc/hosts内に値を注入する
- よきこと: いちいちcontainerのlocal IPを指定しなくても通信できるようにする
- 決してcomponent間のアクセスを可能にするものではない
- deprecated(http://docs.docker.jp/engine/userguide/networking/dockernetworks.html)
- setupが面倒だから
- 設定間違いがちだから
docker network
- none network(default)
- 外部通信を行わない
- host network(default)
- dockerホストと同一ネットワークにスタックするドライバ
- 同一ネットワークI/F, IPアドレスを持つ
- bridge network(default)
- ホスト上に別ネットワークを構築する
- Linux Bridge機能を利用
- Linux bridgeで構成された仮想ネットワーク上にcontainerを構築
- 仮想ネットワークのI/Fにcontainerがvethで接続
- containerはNATで外部と通信
- container作成時のデフォルト挙動
- overlay network
- 異なるDocker host(L3 NW)上のcontainerに、同一ホスト上にあるかのように透過的にアクセスできるようになる
- VXLANを使って実装
- 異なる拠点間やデータセンター上にあるDockerホストに対しても有効
- 自分で作るcustom network
docker network
系のコマンドを使って君だけのcustom networkをつくろう!- 公式documentはこれ推し
- none network(default)
- notes
- docker for macを使っている場合、
docker0
I/Fは生成されない- hostと通信できない
host.docker.internal
を指定することで通信可能- もちろん他の環境だと解決できないので死ぬ
- docker for macを使っている場合、
- https://qiita.com/TsutomuNakamura/items/ed046ee21caca4a2ffd9
- 下のuser guideのまとめ
- 手っ取り早く理解するならこれ
- http://docs.docker.jp/engine/userguide/networking/dockernetworks.html
- 上のqiitaと同時に読むと楽しい
- 人間には目が2つあるからイケる
- https://christina04.hatenablog.com/entry/2016/07/22/193000
- 上2つ読んでNW何も分からんってなったら読むと救われる
- 記事のリンク先まで舐め回すとつよい
- というかこれに全部まとまってる説isある
- http://dqn.sakusakutto.jp/2017/03/docker-run-link.html
- https://naoki029.hatenablog.jp/entry/2019/01/20/204557
- https://gihyo.jp/admin/serial/01/linux_containers/0006
- https://stackoverflow.com/questions/31324981/how-to-access-host-port-from-docker-container
- 手っ取り早くcontainer to host
- ホストのローカルIP指定すればいけそうな気がする(要検証)
- ちゃんとcontainer to host
- docker container作成時に
--net
でhost
を指定- デフォルトで存在するdocker networkシリーズ
- hostと同じnetwork I/Fにアタッチされる
localhost
でアクセス可能
- docker container作成時に
- 手っ取り早くcontainer to container
- 同上のはず
- どっちもちゃんと
--net host
つけて作ってあげる必要がある - 何でか分からなかったら上の記事読むとよい
- ちゃんとcontainer to container
docker create network XXX
- container作成
--net
オプションで作成したnetworkを指定--name
でcontainer名指定もした方が良い(理由は後述)
- もう一個も同じ感じで作る
- 相手先の container nameをドメインに指定してアクセス可能に
- docker composeの時にどうやってnetwork指定するか
docker machine
つよそう
- docker for mac独自の挙動をするのでつらい
- 遊べるlinux環境は早めに準備しておくとよいと思った