-
Notifications
You must be signed in to change notification settings - Fork 0
DNET_DockerNetworking
- 内部通信の話(外部公開は、ポートマッピング(NAPT)を使用)。
- linksを使っているサンプルが多いが、昨今、非推奨らしい。
ホストのNICや、ルータ、
-
物理NIC(eth0)
- ホストのNIC
ホストがVMだったら仮想NICでは?
-
Netfilter(iptables)
- ファイアウォールやルータ
- NAPT(ネットワーク機器一覧の該当節を参照)(ホストの8080 → コンテナの80)
-
仮想ブリッジ(docker0)
- Dockerがデフォルトで作成する仮想スイッチ
- NetfilterとコンテナのNICとを繋いでいる。
コンテナのNIC
-
仮想NIC(veth xxx)
- Veth pair (Virtual ethernet tunnel pair)
- Linux には、OpenVZ由来の Virtual Ethernet Tunnel (veth) というものがある。
名前が示す通り、仮想的な Ethernet Interface の組を作成して、繋いでくれる。
-
仮想NIC(eth0)
- コンテナのNIC
- veth xxxとペア。
Dockerコンポーズでのネットワーク指定。
- [サービス名](または[エイリアス名])でコンテナにアクセスできる。
- version2ではDockerコンポーズ・ファイルに書かれた全てのサービス間に
自動的にリンクを張る仕様になったため、linksとわざわざ書く必要がなくなった。
- depends_onはコンテナの作成順序と依存関係を決める。
- version2で自動リンクされるので、depends_onだけでOKに。
-
昨今、linksは、非推奨らしい。
-
ブリッジ・ネットワークを作成し、そこにコンテナを参加させる。
-
これにより、別々のDockerコンポーズ・ファイルのコンテナに接続可能になる。
※ 具体的には 部会メモ(
OTR_MeetingMemo.md)の該当節を参照。
必要に応じて、Dockerコンポーズ・ファイルに以下を追加する。
environment:
GRANT_SUDO: "yes"
user: root※ 後のデバッグ・ツールをインストールする場合の権限がないので。
-
起動(例)
$ docker-compose up -
コンテナ一覧
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ... -
コンテナのターミナルに入る。
$ docker exec -it [ContainerID] /bin/bash
# cat /etc/hosts | awk 'END{print $1}' | sed -r -e 's/[0-9]+$/1/g'
※ Windowsの場合、素のWSL2とDocker Desktop for WSL2で、挙動が違う。
- 素のWSL2 ≒ Linux(ホストへの接続)
- Docker Desktop for WSL2 ≒ Windows(WSL → WSL2の該当節を参照)
※ 旧 Docker for Windowsでどうだったか?は不明。
その昔は、「10.0.75.1 (DockerNAT)」だった気がするが、その後、また、色々と変わった。
-
コマンドをインストールする。
- ping
- curl
-
ホストOSのネットワークに、
- pingする。
- ncやcurlでアクセスしてみる。
-
Dockerコマンド > コンテナのターミナルに入る(Dockerコマンドの該当節を参照)
-
dockerコンテナの中でホストマシンのIPアドレスを取り出す - Qiita
https://qiita.com/johejo/items/83cb83a885b8ac996ec9 -
Dockerコンテナでpingコマンドを使いたい【トラブルシュート対応】 | SyachikuLOG
https://syachiku.net/docker-install-ping/ -
Issue #416 · jupyter-incubator/sparkmagic
Using "GRANT_SUDO=yes" doesn't work for the docker-compose
https://github.com/jupyter-incubator/sparkmagic/issues/416
- 【連載】世界一わかりみが深いコンテナ & Docker入門
〜 その5:Dockerのネットワークってどうなってるの? 〜 | SIOS Tech. Lab
https://tech-lab.sios.jp/archives/20179
-
docker-compose depends_onとlinksの違い
https://qiita.com/sivertigo/items/9baa73d922a68788402b -
dockerのlinkオプションがレガシーなので、
コンテナ間で名前解決できるようにネットワークを用意する
https://qiita.com/tamanobi/items/8b8dd64ae1f959f9ff9f -
docker-compose で別の docker-compose.yml で
作ったコンテナとリンクする (ネットワークを繋げる)
https://qiita.com/reneice/items/20e981062b093264cd0a
移行メモ
- 概要の「内部通信の話(外部公開は、を使用)。」は目的語が抜けていたため、 本文中の記述(Netfilter による NAPT)に合わせて 「外部公開は、ポートマッピング(NAPT)を使用」とした。
- 本文が無かった見出し「Dockerコンポーズ」に一文を補った。
- 「参考」の見出しが「ホストへの接続」配下とページ末尾で重複し、 GitHub Wiki ではアンカが衝突するため、前者に「(ホストへの接続)」を補った。
- マイクロソフト系技術情報 Wiki(techinfoofmicrosofttech.osscons.jp)への URL リンクは、移行済みの ネットワーク機器一覧 / WSL → WSL2 / Docker for Windowsのネットワーク設定 に張り替えた。
- Open 棟梁 Wiki(opentouryo.osscons.jp)の「部会メモ」へのリンクは、 当該サイトが未移行のため予約ファイル名(
OTR_MeetingMemo.md)で示し、 TODO.md に登録した。
Tags: 移行, Docker, ネットワーク設定, docker0, veth, links, depends_on, networks, Docker Compose
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。