Docker Desktop for Windows は Windows コンテナーと Linux コンテナーが使えるのだけど排他的になっている。
そう思ってスクショを取るために切り替えボタンを押してみたら今はそうじゃない?Windows/Linux コンテナーの切り替え、前は完全に排他的だったと思ったけど、今は実行は両方できるのか?あとホストの再起動要らなくなってる?
まあ、そもそも Docker Desktop for Windows のコンテナーが排他的なの理由が分からないのよな。
で、両方のコンテナーをいじりたいのでラッパープログラムを作った。その内要らなくなりそうだけど。
イメージ図としては下図のような感じ。
Windows と WSL2 Linux のそれぞれで Docker サーバーを立てて、Windows の Docker クライアントから両方にアクセスする。docker
コマンドの --host
オプションを使えば接続先のサーバーを選べるので。あとは --volume
のパスの変換をしてやる。
下の1行目を実行すると2行目に変換する感じ。
> kb --linux --volume C:\Users\kazuki\:/work run --rm -i hello-world > docker --host tcp://127.0.0.1:9266 run --volume /mnt/c/Users/kazuki/:/work --rm -i hello-world
> kb --help Usage: kb [OPTION...] ARGUMENTS 鯨箱 Options: -l --linux Use Linux container -w --windows Use Windows container -d DISTRIBUTION --distribution=DISTRIBUTION Select a distribution on WSL 2 -s --setup Setup Docker for Kujira Bako -V VOLUME --volume=VOLUME Mount a volume -? --help display this help and exit -v[n] --verbose[=n] set verbosity level
とりあえずラッパーにしたけど、本来なら Docker Desktop for Windows を改修するのが筋がいいよなあ。Windows コンテナー選択時はこの変換をやってるんだろうし(未確認)。