WindowsにおけるDockerについて調べていると、「何かちょっと違う気がする…」と感じていたけれど、Windowsだけでも4パターンのDockerが存在しているのか。
なぜWindows OSのDockerは混乱したのか?
こちらの記事が大変参考になりました。
感謝です。
納得。
4パターンの中でも
- Docker for Windows
- Docker Desktop
- Docker On WSL2
上記がより混乱しそう。
より簡単にまとめると、
Docker for Windows
Docker社が開発。2021年時点ではDocker Desktopに切り替わってる。
Docker Desktop
Docker社が開発。
WSL 2バックエンド機能がデフォルトなので、特に設定変更しないと「Dockerコンテナ」が動作する。
Docker On WSL2
WSL2でほぼ完全なLinuxが使用できるので、オリジナルの「Docker」使用できる。
コンテナの種類もたくさん!
Windowsにおいて、コンテナの種類としてこんなんになるらしい。
- LinuxのDockerが扱っているコンテナ→「Dockerコンテナ」
-
Windows OSにも別の実装によるコンテナ→「Windowsコンテナ」
-
MicrosoftがDockerコンテナを動かすためにLinuxを含む仮想マシンを作り、これをコンテナとして扱えるようにしたもの→「Linuxコンテナ」
こんな感じで、Windowsには4つのDockerと3種のコンテナがある。
どれも「Docker」であり、どれも「コンテナ」。なので、タイミング・環境によって、文脈として合ってそうだけど結果別のものを指している可能性が多々あり、より混乱しやすい状況になっている、と。
WSL2 で、ほぼ完全なLinuxが使用できるようになった為、Docker Desktopから「Dockerコンテナ」が利用できるようになったと。
時間軸でも整理
- 2014年
Docker、Microsoft提携 -
2016年
MS Dockerリリース(Windows Server用) -
2019年
Docker for Windows リリース -
2020年5月
WSL 2 正式版リリース。
Docker Desktop リリース。
Docker On WSL 2 リリース。
2021年1月時点のWindowsにおけるDocker概況
windowsの状態でDockerのバージョン確認したときと、WSL2に設定したDebianからDockerのバージョン確認したときは同じバージョンが出てくるからこれはつまり同じDockerを参照しているんだろうなと。
この、Docker Desktop for Windows 関連のデータはどこに保存されているんだとう。
それっぽいファイルは下記にありそう。
C:\Program Files\Docker\Docker
Docker Desktopは標準で、「docker-desktop-data」と「docker-desktop」という2つのディストリビューションをインストールする(これらをWSL 2バックエンドと呼ぶ)。
コンテナの実行は、「docker-desktop」側で行われる。
Windows Terminalから
wsl -l -v
を実行してみると、
PS C:\Users\user> wsl -l -v
NAME STATE VERSION
* Debian Running 2
docker-desktop-data Running 2
docker-desktop Running 2
「docker-desktop-data」と「docker-desktop」が起動しておる!
実際のディスクイメージは、%LOCALAPPDATA%\Docker\wsl\data\ext4.vhdx にあると。
この場所を移動する事もできるみたい。
ユーザーに紐づく形でデータがございました。
ディストリビューションは、設定済のソフトウェアの集まり、という事なのでそれぞれがまたソフトウェアなのだろうな。
既存のWSL 2用ディストリビューションでDockerクライアントを起動することもできるらしい。
注意が必要なのは、この設定は、WSL 2ディストリビューションからDocker Desktopを制御するクライアントを利用できるようにするものであって、コンテナの実行環境にするものではないという点。
どの場合もDocker Desktopが作るWSL 2バックエンドがコンテナの実行環境になる。
コンテナの実行は、「docker-desktop」側で行われる、とのことなのでそのバックエンドが「docker-desktop」になる、ということになるのだろうか。
WSL 2のディストリビューション上でDockerコンテナを実行させたい場合には、ディストリビューション内でパッケージマネージャーコマンドを使ってDockerをインストールする必要がある。
自分の場合だと、WSL2に設定したDebianからインストールしろ、ということですね。
Windows10におけるDocker情報がいろいろ散っていたので、ちょっとまとめてみた次第でした。