kiyasuの日記

ハッピーうれピーよろしく哀愁

DockerDesktop(Windows)ことはじめ

Installation Guide · homuler/MediaPipeUnityPlugin Wiki · GitHub

これをやろうとして、どうにもひっかかったのでメモ


最初のチュートリアルはここを見ながらやるとうまくいった。 

DockerをインストールしてLinux系コンテナを構築したときの備忘録 - Qiita

問題

Dockerfileのなかの

RUN curl -L http://repo.msys2.org/distrib/x86_64/msys2-base-x86_64-20210604.sfx.exe

このへんで

0curl: (6) Could not resolve host: repo.msys2.org

というエラーが出ました。

調べたこと

DockerのDNS設定

まずDocker実行時に--add-hostでホストを追加。もしくは--dnsDNSサーバー追加。nslookupでrepo.msys2.orgのIPアドレスを調べて指定する。

docke build --add-host=repo.msys2.org:178.63.98.68 -t mediapipe_unity:windows . -f docker/windows/x86_64/Dockerfile

みたいにやってみたがCould not resolveの表示は変わらず。

curl doesn't work during docker build - Stack Overflow

dockerfile - How to update /etc/hosts file in Docker image during "docker build" - Stack Overflow

Dockerのコンテナの中からホストOS上のプロセスと通信する方法 - Qiita

この辺も気になる

Dockerコンテナ内の名前解決への /etc/hosts の影響 - Qiita

firewallをオフにしてみたが変わらず。

Dockerをもうちょっと触ってみる

Dockerのイメージを起動して直接操作してみる(Dockerfileまかせではなく)。

Dockerコマンド一覧 - Qiita

「docker run -it」にするとコンテナがすぐに終了しない理由 - プログラミング初心者がアーキテクトっぽく語る

まず

docker run -it [image ID]

で入る。次に

C:>ping 178.63.98.68

Pinging 178.63.98.68 with 32 bytes of data:
Reply from 178.63.98.68: bytes=32 time=254ms TTL=51
Reply from 178.63.98.68: bytes=32 time=254ms TTL=51
Reply from 178.63.98.68: bytes=32 time=254ms TTL=51
Reply from 178.63.98.68: bytes=32 time=254ms TTL=51

Ping statistics for 178.63.98.68:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 254ms, Maximum = 254ms, Average = 254ms

C:>ping repo.msys2.org Ping request could not find host repo.msys2.org. Please check the name and try again.

とやってみた。ネットワークは出ているがIPが解決できないようだ。 Windowで/etc/hostsにあたる場所はC:\Windows\System32\drivers\etc\hostsらしいが、これはどうやって編集すればいいんだ。

docker コンテナ内でファイルが編集できない | mebee

これか?これもコンテナ名とパスの書き方がちょっとわからないな…。

docker cp使って簡単永続化 - Qiita

ここも参考に

その前に問題のDockerfileを見るとこの後にもいろいろダウンロードするっぽいので、DNS自体の設定をした方がよさそうだ。

しかしここで詰んだ。

Dockerコンテナ内の名前解決への /etc/hosts の影響 - Qiita

これはWindowsマシン用のLinuxコンテナっぽい

Docker Desktop for Windows のネットワーク構築機能 — Docker-docs-ja 19.03 ドキュメント

ここには書いてないっぽい

コンテナの DNS を設定 — Docker-docs-ja 1.10.0b ドキュメント

これもLinuxコンテナぽい

Docker DNS not responding from inside a container - Docker Desktop for Windows - Docker Community Forums

これは試してみたが、変えるべき設定は自分の環境では問題なさそうだった

How to set DNS in Docker for windows? – QuickAdviser

情報が古そう。しょっぱなの

Just right click on docker’s icon in the tray bar and select “Settings” item. Then, on the Docker’s window, select the “Network” section and change the DNS option from “Automatic” to “Fixed” and hit “Apply”.

この項目がもう存在しないもんな。