Windows+WSL2+Docker+VSCodeでdocker開発環境を作る
最近 Thinkpad X1 Extreamを購入しました。
Thinkpad x1 extream来たぜ pic.twitter.com/X1QaB6L5sE
— Shoichi Takagi @ DEPARTURE (@fly1tkg) 2020年1月18日
開発業務は基本Ubuntuでやっていきたいのですが、Windowsでしか動かないアプリたち(Adobe、MSOfficeなど)も使っていきたく。ホストOSはWindows 10 Home, 開発用としてWLS2 (Windows subsystem for Linux 2) を利用していくことにしました。
はじめはVirtualBoxを準備しようかと思いましたが、WSL2はプレビューながら業務で使えると同僚からちょっと聞いていたので、今回はこちらにしてみました。
また、最近VSCodeのRemote拡張がイケてるので合わせて導入していきます。
WSL2のインストール
WSL 2 のインストール | Microsoft Docs を参考にやってきます。
Insider Programに参加
Windows Insider Program | Get the latest Windows features に参加して、OSのアップデートをします。 僕はここでアップデートし忘れてはまりました。
Ubuntuのインストール
Windows StoreからUbuntuをインストールしました。
Windows Storeアプリを起動して、Ubuntu と検索してくれば出てきます。
WSLを有効にする
Powershellを管理者権限で実行(右クリックで選べる)してWindows Subsystem for Linux と仮想マシンプラットフォームのオプションコンポーネントの両方がインストールされていることを確認します。
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
実行後再起動します
WSL2に変更する
Powershellで以下のコマンドを実行しました。
wsl --set-version Ubuntu 2
ここまでスタートメニューからUbuntuをえらんで起動できます。
Dockerのインストール
ここから先はUbuntuのコンソールで実施していきます。
Ubuntuにdockerをインストールして、自分のユーザをdockerグループに入れます。
$ curl -fsSL https://get.docker.com -o get-docker.sh $ sudo sh get-docker.sh $ sudo usermod -aG docker {your-user}
docker起動
$ sudo cgroupfs-mount
$ sudo service docker start
動作確認としていつものdockerのhelloworldを実施してみました。
https://hub.docker.com/_/hello-world
$ docker run --rm hello-world
VSCodeのインストール
Visual Studio Code - Code Editing. Redefined からダウンロードして、インストール。
インストール後、拡張機能 ms-vscode-remote.remote-wsl
を入れます。
インストール後、Ubuntuのコンソールで code
コマンドが使えるようになっているので、任意のプロジェクトフォルダで以下コマンドを実行すると、Windows側でVSCodeが開き、プロジェクトフォルダ内のファイルを編集できます。(便利、、!)
$ code .
ファイル共有
WSL -> Windowsの参照は
/mnt/c
配下がWindowsのCドライブがマウントされているので、WSL上からWindowsのファイルを読み書きすることができる。
逆に Windows -> WSL
の参照は\wsl$
というネットワークドライブがアクセスできる(Exploreでここに移動すると見られる)
ので、クイックアクセスにピン止めしておいた
そのほかやったこと
Windowsのビーブ音を消す
なんか、tabで補完するたびにビープ音が出るので、OSの設定で消しました。
.inputrc
で制御できるみたいなのですが、sshした先とかでビープ音なっちゃうし、そもそもWindowsのビープ音腹立つのでいったんこの設定で様子見ます。
WSL向けのターミナルを入れる
複数Windowで開くなどが標準のターミナルだとできないようだったのでwslttyというターミナルを導入しました。