引き続きDocker環境を構築し、テストしたり勉強したりしております。
★Docker Desktop for Windows/Macでつくるクリーンな開発環境構築入門(Python版) Kindle版をダウンロード購入(2022年12月10日 (土曜日))
こちらの本を参考にして。
で、書いてある事の再現を本に書いてある環境のDocker Desktop for Windowsではなく
★macOS 12のVirtualBOX(仮想環境)でLinux(CentOS 7)でDockerインストール、実行(2022年12月11日 (日曜日))
★Dockerで--mountしてたらそんなフラグ(オプション)はない、とエラー。yumで入れたCentOS 7のDockerのバージョンが古かった【なので最新?安定VerのDockerインストールした】(2023年02月04日 (土曜日))
の環境でテストしていました。
で、一応本に書いてある方の
★HPノートHPENVY13(Windows 10)にWSL2とDocker Desktop(Ver 4.15.0) をインストールしてみた(2022年12月10日 (土曜日))
の方で復習がわりにテストしてみる事に。
で、Linuxでうまく動いていたDockerfileをWindowsのWSL(Ubuntu)のホームディレクトリ直下にフォルダ作成し、ファイルを格納。Visual Studio Codeの上のメニューの「ターミナル」から「新しいターミナル」開いて(普通にWindows PowerShellでもええですが)
wsl
でWSL(Ubuntu)に入りLinuxの方のホームディレクトリにcd(WSLしただけだと/mnt/c/Users/ユーザー名とWindowsのユーザーフォルダにいるので・・・・cdすると/home/ユーザー名/)へ
移動。
更にDockerfileを置いてあるフォルダに移動(最初から指定してもいいけど)し
docker image build
すると
[+] Building 70.5s (4/4) FINISHED
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 38B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> ERROR [internal] load metadata for docker.io/library/ubuntu:22.04 70.4s
=> [auth] library/ubuntu:pull token for registry-1.docker.io 0.0s
> [internal] load metadata for docker.io/library/ubuntu:22.04:
failed to solve with frontend dockerfile.v0: failed to create LLB definition: failed to authorize: rpc error: code = Unknown desc = failed to fetch oauth token: Get "https://auth.docker.io/token?scope=repository%3Alibrary%2Fubuntu%3Apull&service=registry.docker.io": dial tcp: lookup auth.docker.io on 172.29.80.1:53: read udp 172.29.88.41:51329->172.29.80.1:53: i/o timeout
というようなエラーが。
エラー文でググると
★[備忘録]Docker for windowsで急にビルドできなくなった。 - Qiita
★UnauthorizedエラーでDockerのイメージがpullできない・docker loginコマンドでログインできない - Qiita
等が出て来ますがどうもこれではない気がする・・・・・
パソコン再起動しても駄目。
buildは前はしてないものの
docker run -it -d -p 80:80 --name centos7 centos:centos7
とかしても何も問題なく出来たけどなぁ・・・・・・
もしや・・・と思い、このパソコンにインストールされているESET INTERNET SECURITY(イーセット インターネットセキュリティ)のファイアーウォールの画面(最近ブロックされたアプリケーションまたはデバイス)を見てみると・・・・・

DockerインストールしたWindowsノートPCのホスト名のローカルIPとDockerのIPがブロックされておる・・・・この二つを解除。それでも駄目で172.19.157.96のなぜかMicrosoftと書いてある奴のブロックを解除したら
docker image build
が成功しました。ESETが怪しい通信としてブロックしていたのね。まああくまでクライアントPC向けのセキュリティソフトだからまあサーバー的な動きしてたら怪しいと思うのだろうね。
という事でビルドが成功したので
docker run
でございます。
Webサーバーnginxをポート8081で公開する奴でございます。
まずはDockerを実行しているパソコンで
http://IPアドレス:8081
でアクセス。Webページが表示されました。
お次に物理的に違うマシンからアクセス
http://IPアドレス:8081
・・・・表示されない
例の如くESETを見ると

com.docker.backend.exeの8081ポートへのMac Miniからのアクセスがブロックされておる。まあ・・・・そうよね。ブロック解除でMacからアクセスできるようになりました。
が・・・・、8081ポートを常時あけておくようなルールはクライアントPC的にはよろしくないのでそのESETのルールは削除。そうすると外からアクセスできなくなりました。
基本はローカル、外からの接続テストが必要な場合はその時だけ、ESETのファイアーウォールをカットしよう。
あとは書いてある事の応用でbindのテストとかしていました。
ある程度の基礎を憶えれば、あとはやりたい事に対して、テンプレートをググればいいかな?
関連
DockerとESETでググると
★DockerとESETセキュリティソフトとの相性が悪いみたい - Qiita
★ESETのファイアウォールが動作しているとDockerで立ち上げたlocalhostのページがブラウザで確認できない問題 - Qiita
★Docker for Windows - ESET のファイアウォールが原因で共有フォルダが有効にならない時の対策 | Docker | みどりのウェブ開発日記Docker | みどりのウェブ開発日記
結構、Mac版での情報が出て来ますね。ESETのファイアーウォールの対話モードで解決する話もあれば最初からそういう通信を許可しちゃう設定もあったり。