wsl2でdockerを動かす
windowsでdockerが動作することを確認できたので書いてみます。
環境
windows home
設定
the Windows Insider Programの有効化
設定 -> 更新とセキュリティ -> Windows Insider Program を許諾して有効化
2004のバージョンになれば使用できるらしので、2020年の春まで待てば必要なくなると思う。
wslの有効化
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
wslのディストリビューションインストール
wslをインストールするため、Microsoft Storeから「wsl」で検索し、必要なディストリビューションをインストールする。
個人的に「Ubuntu-18.04」をインストール
スタートプログラムより起動して「username」と「password」の入力を設定します。
これでubutuのCUIで使用できます。
wslのバージョンをwsl2に設定する
wsl --set-version <Distro> 2
wsl -l wsl -l -v wsl --set-version Ubuntu-18.04 2
wslのコマンドが使えない場合、wsl2が使用できる環境でないため、「Windows Insider Program」やWindowsUpdateを確認して、インストールする必要がある。
wsl2が使用できない場合、「-v」コマンドや「--set-version 」がない。
dockerのインストール
Downloadのリンクよりダウンロードページへ遷移し、「GetDownload」からダウンロードします。 (このあたりがいくつかダウンロードファイルがあったため、正しいか不明。v2.2.2.0以降が必要です。)
「wsl2 enable」が有効になっているので、たぶん有効になっているはず。
動かす
macで使用していたdocker-compose.yml
version: '3' services: db: image: postgres:9.6.15 environment: - POSTGRES_USER=app - POSTGRES_PASSWORD=pass - POSTGRES_DB=app - LC_ALL=C ports: - '5432:5432' volumes: - ./docker/postgres/db:/var/lib/postgresql/data
docker-compose up
起動してみると、ダウンロードしてインストールが始まり、動作しそうなところまでいけました。
permission deniedエラー
ログを確認すると、「permission denied」のエラーが発生しておりファイル書き込みができませんでした。
このあたりが詳しくないので、dockerのユーザーの指定??が悪いと思われます。wsl上のユーザーだと思いますが、詳しく調べていません。動作するところまでやろうと思ったので、別の方法で対応しまうs。
volumeを作成して利用することで動作させてみます。
docker create volume app_db
version: '3' services: db: image: postgres:9.6.15 environment: - POSTGRES_USER=app - POSTGRES_PASSWORD=pass - POSTGRES_DB=app - LC_ALL=C ports: - '5432:5432' volumes: - app_db:/var/lib/postgresql/data volumes: app_db: external: true
「permission denied」がでなくなりましたが、アクセスできないエラーが発生していたため、いろいろ調査。
いろいろと試してみたところdockerの設定の「Expose daemon on tcp://localhost:2375 without TLS」を有効にして再起動させて再度dockerを起動させることでエラーがなくなりました。
アプリからデータベースへ接続してみて動作することを確認できました。
起動するところまでは行けたみたいです。
linuxと同じファイルで作りたかったですが、少し変更が必要かもしれないです。
使用してみた感想
1日ほどdocker desktop for windowsを使用してみましたが、速度面で使えるレベルでないためどこがネックになっているか調べる必要が出てきました。
web開発で使用するため、nginxの部分かdbのアクセスの部分か調べる必要がありますが、ファイル周りが影響していそう。
もうすこしwindowsの開発環境は検討が必要かもしれない。