「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfrastructure.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-戻る
--[[Docker]]
--[[Dockerコンポーズ]]

*目次 [#hf667270]
#contents

*概要 [#h8e9532d]
-内部通信の話(外部公開は、を使用)。
-[[links>#b82a9aee]]を使っているサンプルが多いが、昨今、非推奨らしい。

*詳細 [#g3bd71cc]

**NIC等 [#f0cf3f82]

***ホスト毎 [#a9224dd3]
ホストのNICや、ルータ、

-物理NIC(eth0)
--ホストのNIC
--%%ホストがVMだったら仮想NICでは?%%

-Netfilter(iptables)
--ファイアウォールやルータ
--[[NAPT>https://techinfoofmicrosofttech.osscons.jp/index.php?%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E6%A9%9F%E5%99%A8%E4%B8%80%E8%A6%A7#a4d3188c]](ホストの8080 → コンテナの80)

-仮想ブリッジ(docker0)
--Dockerがデフォルトで作成する仮想スイッチ
--NetfilterとコンテナのNICとを繋いでいる。

***コンテナ毎 [#p90b20ec]
コンテナのNIC

-仮想NIC(veth xxx)
--Veth pair (Virtual ethernet tunnel pair)
--Linux には、OpenVZ由来の Virtual Ethernet Tunnel (veth) というものがある。~
名前が示す通り、仮想的な Ethernet Interface の組を作成して、繋いでくれる。


-仮想NIC(eth0)
--コンテナのNIC
--veth xxxとペア。

**[[Dockerコンポーズ]] [#efaf16a3]

***links [#b82a9aee]
-[サービス名](または[エイリアス名])でコンテナにアクセスできる。
-version2では[[Dockerコンポーズ]]・ファイルに書かれた全てのサービス間に~
自動的にリンクを張る仕様になったため、linksとわざわざ書く必要がなくなった。

***depends_on [#jf024355]
-depends_onはコンテナの作成順序と依存関係を決める。
-version2で自動リンクされるので、depends_onだけでOKに。

***networks [#k76b1473]
-昨今、[[links>#b82a9aee]]は、非推奨らしい。
-ブリッジ・ネットワークを作成し、そこにコンテナを参加させる。
-これにより、別々の[[Dockerコンポーズ]]・ファイルのコンテナに接続可能になる。

>※ 具体的には[[コチラ>https://opentouryo.osscons.jp/index.php?%E9%83%A8%E4%BC%9A%E3%83%A1%E3%83%A2#x542f6a3]]

**ホストへの接続 [#af36791e]

***rootに設定する。 [#h9af5c98]
必要に応じて、[[Dockerコンポーズ]]・ファイルに以下を追加する。
 environment:
   GRANT_SUDO: "yes"
 user: root

※ 後のデバッグツールの[[インストール>#ud016fc9]]の権限がないので。
※ 後のデバッグ・ツールを[[インストール>#ud016fc9]]する場合の権限がないので。

***コンテナに入る。 [#a0fe1e4b]
-起動(例)
 $ docker-compose up

-コンテナ一覧
 $ docker ps
 CONTAINER ID  IMAGE  COMMAND  CREATED  STATUS  PORTS  NAMES
 ...

-コンテナのターミナルに入る。
 $ docker exec -it [ContainerID] /bin/bash

***ホストOSのIPアドレスを取得する。 [#bb6baf03]
 # cat /etc/hosts | awk 'END{print $1}' | sed -r -e 's/[0-9]+$/1/g'

※ Windowsの場合、素のWSL2とDocker Desktop for WSL2で、挙動が違う。
--[[素のWSL2 ≒ Linux>#af36791e]]
--[[Docker Desktop for WSL2 ≒ Windows>https://techinfoofmicrosofttech.osscons.jp/index.php?WSL%20%E2%86%92%20WSL2#yf2b317a]]

※ 旧 Docker for Windowsでどうだったか?は不明。~
  その昔は、「[[10.0.75.1 (DockerNAT)>https://techinfoofmicrosofttech.osscons.jp/index.php?Docker%20for%20Windows%E3%81%AE%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E8%A8%AD%E5%AE%9A]]」だった気がするが、その後、また、色々と変わった。

***pingやncやcurlでアクセスしてみる。 [#ud016fc9]
-コマンドをインストールする。
--ping
--curl

-ホストOSのネットワークに、
--pingする。
--ncやcurlでアクセスしてみる。

***参考 [#o58048a5]
-[[Dockerコマンド > コンテナのターミナルに入る>Dockerコマンド#b5577f19]]

-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

*参考 [#p300cca0]
-【連載】世界一わかりみが深いコンテナ & Docker入門~
〜 その5:Dockerのネットワークってどうなってるの? 〜 | SIOS Tech. Lab~
https://tech-lab.sios.jp/archives/20179

**Qiita [#h6b2935b]
-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

**[[マイクロソフト系技術情報 Wiki>https://techinfoofmicrosofttech.osscons.jp/index.php]] [#u9b6bcde]
***[[Docker for Windowsのネットワーク設定>https://techinfoofmicrosofttech.osscons.jp/index.php?Docker%20for%20Windows%E3%81%AE%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E8%A8%AD%E5%AE%9A]] [#u06f8ff3]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS