Docker + WSL2
Docker + WSL2での開発ってできるの?という疑問を調べてみたメモ。
Dockerのコンテナを動かす部分と、イメージを格納する部分は、WSL2を使うようにできる。WSL2がある状態でDockerをインストールすると、勝手にそれを使うように設定してくれる。
インストール後にWSL2のDistroを見てみると、2つ追加されている。
PS C:\Users\choge> wsl -l -v NAME STATE VERSION * WLinux Running 2 docker-desktop-data Running 2 docker-desktop Running 2
この状態で何らかのコンテナを起動すると、WSL2上にイメージがダウンロードされて、WSL2のKernelでそのイメージが動くみたい。よって、やってることは基本的にはVM立ててその中でDockerを動かしているのと同じ。ただし、スピードはだいぶ速いらしい。
開発方法としては、大きく二つありそうな感じ:
- あくまでも実行環境 (or ビルド環境) としてDockerを使う。
- 開発環境自体としてDockerを使う。
- この場合、OS+Programming言語+Middleware+依存ライブラリなどをイメージにしておいて、そのイメージをもとにしたコンテナでシェルを起動して開発する感じ。
- VS Codeを使っているのであれば、なんかいい感じのオプションで開発できるっぽい。
よって、Javaのアプリの開発環境をDockerでまとめて配布、とかは若干無駄な感じがする。結局IDEとか必要だし。これとかこれも、HelloWorld動かしてるだけだし・・・
NodeJSとかPythonとか、VS Codeで十分開発までできちゃうスクリプト言語の開発にはいいかも。特に pip
の挙動が微妙なPythonにはちょうど良いかも。
参考資料
大体が出来上がったものをコンテナで実行してる感じ。下のアメブロの記事は、VS Codeを使ってコンテナ内で開発までやってる。
Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017
『VSCodeとDockerでSpring Boot + PostgreSQL開発環境を作る(1)』
以下のはPythonとかの開発