#author("2023-01-31T15:46:14+09:00","default:irrp","irrp")
#author("2023-02-23T21:09:01+09:00","default:irrp","irrp")
→コンテナ型仮想化

→[[WSL関連]] <WSL単体の情報はこちら

#contents


* 概念的理解 [#p8eb2d60]
-[[Windows 内の Docker 環境を入れ替えてみた(Docker Desktop → Rancher Desktop) | DevelopersIO>https://dev.classmethod.jp/articles/migration-from-docker-desktop-to-rancher-desktop/]] 2022.11

-[[Windows版Docker|3種類の違い>https://penpen-dev.com/blog/windows-docker-tigai/]] 2021.9
 Docker DeskTop(WSL2版)
    →Microsoftが用意してくれたLinuxカーネル(WSL2用にカスタマイズされた奴)を使ってDockerを起動するやで!
    仮想化にはHyper-Vを使うやで!
    (WSL2のLinuxカーネルを使う場合は、HyperーVを使う際のOSエディションの制限が受けないのだ!)
 
 Docker DeskTop(Hyper-V版)
    →Docker社が自分で用意したLinuxカーネルを使ってDockerを起動するやで!
    仮想化にはHyper-Vを使うやで!
    (自前で用意したOSを使う場合は、HyperーVを使えるOSエディションが制限されてしまうのだ!)
 
 Docker Toolbox
    →Docker社が自分で用意したLinuxカーネルを使ってDockerを起動するやで!
    仮想化にはVirtualBoxを使うやで!
    (Microsoftにはまったく頼らんで!)

--Windows11 Home エディションでは WSL2版しか使えない

-[[WSL2とDockerの関係性を知りたい>https://teratail.com/questions/309712]] 2020.12
--WSL2はHyper-Vの技術を応用して使って動いていると思ってください。厳密に説明すると違いますが、原理的にはHyper-Vを用いている
--Docker Desktop for Windowsには、「WSL2インテグレーション」という機能があり、これは言ってしまえば「WSL2が動くカーネルを用いたDockerが動く」機能です。
--普通のDockerでも例えばCentOSの上でUbuntuのコンテナを動かすことができます。これはホストOSであるCentOSに使われているLinuxカーネルの力を使い、「Ubuntuを動かすために最低限必要なカーネル以外のファイルたち」をtarアーカイブにまとめた「Dockerイメージ」と呼ばれるものを展開して起動したものです。
--Dockerイメージでいう「OS」というものはただのファイル郡です。ホストOSのカーネルの力を借りて立ち上がることでOSのような振る舞いをするだけで、Dockerfileはそのファイル群(Dockerイメージ)をどのように作成するかという手順を書いたものに過ぎません。
--''Docker + WSL2の組み合わせでDockerがWSL2の上で動かすことができる。そうしない場合、Docker Desktop for WindowsはHyper-V上にLinuxマシンを作成します。''
---※ただし pro Editionのみ。Home Editionでは WSL2しか使えない
--DockerコミュニティではDebianベースのイメージが最も一般的
--Debianは昔からあるディストリビューションで、派生ディストリビューション(ubuntuとか)も多く、CentOSみたいに商用ディストリビューションからの派生でもないから。



* 具体的ノウハウ [#l0e22590]
-[[wslのDockerでGUI操作 - Qiita>https://qiita.com/rayfiyo/items/17842dcf258b4d585531]] 2023.2

-[[DockerコンテナとブリッジとDHCP - Qiita>https://qiita.com/yas99en/items/6f527e9f4ccc3085fd88]] 2023.1

-[[Windows11でDocker Desktopを使わずにDocker | IIJ Engineers Blog>https://eng-blog.iij.ad.jp/archives/17746]] 2023.1
-[[Docker Desktopを使わずにWindowsでDocker | IIJ Engineers Blog>https://eng-blog.iij.ad.jp/archives/14205]] 2022.7

-[[Windowsにゼロから WSL2 + Docker CE + React環境を構築する全手順 - Qiita>https://qiita.com/yamazombie/items/4071dfb28e2465da7e3b]] 2022.7

-[[WindowsでDockerを使う時、正しくファイル配置しないと激重になるので注意 - Qiita>https://qiita.com/minato-naka/items/84508472c04f628e576e]] 2021.12
-[[「WSL2 + Docker」が遅いなら、速くすればいい - Qiita>https://qiita.com/LemonmanNo39/items/e92ed9e3b9c812238006]] 2021.11

-[[Docker for Windowsで起動時に「Docker for Windows - Access denied」と表示される場合の対処法 - Qiita>https://qiita.com/toro_ponz/items/d75706a3039f00ba1205]] 2018
--実行ユーザーをdocker-usersグループに所属させる
--注意点として、ドメインの検索時に出てくる検索フォーム起動時にアカウントとパスワードを求められるが、ここで管理者アカウントを入れてはいけない。ドメインユーザのアカウントとパスワードでアクセスしないと検索フォーム自体が開かないので注意。
--余計な問題が起きないようにローカルAdministratorグループにドメインアカウントを登録してしまうという手もある。
---このときの注意点として、Windowsログオンはドメインユーザーで行い、「コンピューターの管理」はローカル管理者で実行する必要があること。

-[[wsl上のubuntuでdockerが使用できない>https://zenn.dev/kathmandu/articles/4a86c3d75b93c3]] 2021.5
--The command 'docker' could not be found in this WSL 1 distro. We recommend to convert this distro to WSL 2 and activate the WSL integration in Docker Desktop settingというエラーが表示される場合
--wsl --set-version Ubuntu 2 で変換する
 

-[[Windows環境のDockerとWSLの活用方法・手順を解説 | アンドエンジニア>https://and-engineer.com/articles/YcQ_4RAAACQAn1yE]] 2022.1
--WSL2はWSLの新バージョンで、ELF64 Linuxのバイナリ実行可能でLinuxシステムコールの完全互換性を確保したリリースです。WSLと操作性は変わらない上に、最新の仮想化テクノロジーを使用することでファイルシステム性能が向上しています。
--WSL2は、Windows 10(バージョン 1903、ビルド 18362以降)でサポートされています。現バージョンのインストール要件は Windows 10(バージョン 2004以降 、ビルド 19041以降)およびWindows 11が実行環境として必要です。


-[[Windows PCでDocker Desktopを利用せずにLinuxコンテナーとWindowsコンテナー環境を構築する方法 - Qiita>https://qiita.com/hatasaki/items/1b945f940c23e0ee36f3]] 2021.12
--Windows PC (Windows10/11などのクライアント環境)でのDocker Desktopの代替案について、その構築手順を紹介したいと思います。
--特に、LinuxコンテナーをWindows PCで実行する方法だけでなく、Windowsコンテナーの環境構築についても紹介しています。


-[[WSL での Docker コンテナーの概要 | Microsoft Docs>https://docs.microsoft.com/ja-jp/windows/wsl/tutorials/wsl-containers]] 2021.10

-[[WSL2(Ubuntu18.04)上でDockerを起動する - Qiita>https://qiita.com/FugitHora812/items/bc84a176234f36bf6697]] 2020.5
 $sudo service docker start


* VS Codeとつなげて使う [#e71661b5]
VS Codeについては→コーディング支援ツール

-[[VSCodeでWSL2上のDockerコンテナ内コードをデバッグ - Qiita>https://qiita.com/c60evaporator/items/fd019f5ac6eb4d612cd4]] 2021.1
-[[VSCode Remote Containerが良い>https://qiita.com/d0ne1s/items/d2649801c6f804019db7]] 2020.12
-[[【VSCode】launch.jsonについて理解する | amateur engineer's blog>https://amateur-engineer-blog.com/vscode-launchjson/]] 2021.7
--引数渡したい場合は "args" : ["xxx", ...]


*環境構築 [#kee175ef]
-[[WindowsマシンでDocker Desktopを使用せずにDocker CLI実行環境を整備する方法 | DevelopersIO>https://dev.classmethod.jp/articles/docker-cli-without-dockerdesktop-on-windows/]] 2022.10

-[[Windows で Docker Desktop を使わない Docker 環境を構築する (WSL2) | スクエニ ITエンジニア ブログ>https://blog.jp.square-enix.com/iteng-blog/posts/00024-wsl2-docker-ce/]] 2022.9

-[[Windows上のWSLでコンテナによる開発環境を作ってみる(Python環境編) - Qiita>https://qiita.com/smats-rd/items/e65feae601b4496be381]] 2022.3

-[[Docker Desktop for WindowsをやめてWSL2上のDocker Engineへ移行する - Qiita>https://qiita.com/hkato/items/7cf083ee73753162120a]] 2022.1

-[[WSL2エンジンでDockerデスクトップを実行するときに使用されるdocker-desktop-dataディストリビューションとは>https://isolution.pro/q/so74394787/wsl-2-enjin-de-docker-desuku-toppu-o-jikkosuru-tokini-shiyosareru-docker-desktop-data-dhisutoribyu-shon-to-wa]] 2020
--高レベルの観点からは、ブートストラップディストリビューションは基本的にHyper-Vに置き換わり、データストアディストリビューションは以前にVMに接続したVHDに置き換わります。
--ブートストラップディストリビューションは、前述したのと同じ2つのisoファイルに基づいて独自のルートファイルシステムを持つLinux名前空間を作成し(完全に正しいわけではありませんが、十分に近い)、データストアディストリビューションをコンテナイメージなどのバッキングストアとして使用します。 VHD(WSL 2では、現時点では追加のVHDを接続できないため、そのためにクロスディストリビューションマウントを利用します)。

--参照:[[Introducing the Docker Desktop WSL 2 Backend - Docker Blog>https://www.docker.com/blog/new-docker-desktop-wsl2-backend/]]


-[[セットアップ - Docker on WSL 2 + Windows ターミナル - Qiita>https://qiita.com/yokarikeri/items/367741844abde4d3c7f4]]

-[[【素朴な疑問】Docker Desktop for Windows でLinux用ディストリビューションをインストールする意味>https://teratail.com/questions/346184]] 2021
--WSL用のMS提供ディストリビューションをインストールしなくてもDockerは動かせるが、なぜインストールするのかという話
--Docker Desktop for WindowsというプロダクトはDockerのホスト機能だけでなく、Docker Integration PackageというCLIツール等を含んだものとして提供されており、それを利用するためのUser Distribution(下図参照)としてUbuntu等ユーザーがインストールしたディストリビューションを利用する前提があるからじゃないですかね。
--[[Docker &#10084;&#65039; WSL 2 - The Future of Docker Desktop for Windows - Docker Blog>https://www.docker.com/blog/docker-hearts-wsl-2/]] 2019

-[[【Windows10+WSL2+Docker】ローカル環境を汚さずに使い捨ての開発環境を手に入れる &#8226; Small Changes>https://snyt45.com/posts/20210806/wsl2-multiple-linux-distribution/]] 2021.8

-[[&#128051;WindowsでDockerを始める手順&#128051;>https://qiita.com/techpit-jp/items/f4a1319a909dd508f372]] 2021.2

-[[WSL2でdockerの環境構築 - Qiita>https://qiita.com/asahi13/items/46c00f12321f68ef2015]] 2020.6

-[[【連載】WSL2、Visual Studio Code、DockerでグッとよくなるWindows開発環境 &#12316; その1:まずは概要 &#12316; | SIOS Tech. Lab>https://tech-lab.sios.jp/archives/21023]] 2020


* VHDXファイルの置き場所を変更する [#pf9d4a1a]
-[[WSL2 Dockerのイメージ・コンテナの格納先を変更したい (WSL2のvhdxファイルを移動させたい) - Qiita>https://qiita.com/neko_the_shadow/items/ae87b2480345152bc3cb]] 2020
--Docker Desktop backend WSL2 をインストールすると、docker-desktopとdocker-desktop-dataというふたつのディストリビューションが作成されます。
|ディストリビューション|役割|実体(デフォルト)|h
|docker-desktop|Dockerを動かすためのエンジン|%LocalAppData%\Docker\wsl\data\ext4.vhdx|
|docker-desktop-data|イメージやコンテナを格納する|%LocalAppData%\Docker\wsl\distro\ext4.vhdx|
--とくにdocker-desktop-dataについては、docker pullなどを繰り返すたびにもりもり大きくなっていくため、%LocalAppData%に置いておきたくない、ドライブごと変えてしまいたいということが十分ありえます。

-基本的には以下の手順となる
--wsl --export でディストリビューションのtarを作る
--wsl --unregister でディストリビューションの登録を解除
--wsl --import で新しいディレクトリへ移動

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