概要
Windows で Linux の環境を構築できる、WSL2 (Windows Subsystem for Linux ver2) と、Visual Studio Code(以下 VSCode)、 Docker を使って、モダンな開発環境を構築します。
本記事の対象の読者
- Windows での開発者
- Docker での開発を行っている人、これから行ってみたい人
- cmd とかやってらんない。bash 使わせろ、な人
WSL2 のインストール
WSL2 は、Windows10 version 2004 (May 2020 Update) 以降でないと入れられませんでしたが、2020/8 から 1903/1908 でも動作できるようになりました。
「WSL 2」が「Windows 10 バージョン 1903/1909」でも利用可能に ~ Microsoft が旧 OS に移植 - 窓の杜
公式の記事も参考にしてください。
以下は、1903/1908/2004 共通の作業です。
-
コントロールパネルを開きます。
-
「Windows の機能を有効化または無効化」を開きます。
-
「Linux 用 Windows サブシステム」と「仮想マシンプラットフォーム」にチェックを入れ、OK ボタンを押します。
-
インストールが完了したら、再起動する必要があります。
これは、Linux が動作する環境だけのセットアップで、これに CentOS や Ubuntu ディストリビューションを入れる必要があります。
-
コマンドプロンプトで 既定のバージョンを '2' にします。
> wsl --set-default-version 2
Ubuntu の導入
Powershell を起動して、下記コマンドを実行します。Ubuntu のダウンロードとインストールが実行されます。
> wsl --install -d ubuntu
完了したら、Ubuntu のターミナルが起動します。はじめにUbuntu上でのユーザーとパスワードを設定する必要があるので、入力してください。
Installing, this may take a few minutes...
erPlease create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: ebihara <- ユーザー名
New password: <- パスワード(入力しても表示されません)
Retype new password: <- 確認のため、同じパスワードを入れる
passwd: password updated successfully
Installation successful!
Visual Studio Code を WSL へ接続する
VSCode が入っていない場合は、下記から入れてください。
VSCode を起動して、拡張機能から、wsl で検索します。
(下記画像では、すでにインストールされています)
インストールしたら、一旦 VSCode を閉じます。
Ubuntu から Visual Studio Code を起動する
Windows のスタートメニューから、[Ubuntu]を選択するとターミナルが起動します。
ここに、空のディレクトリを作って、そこで VSCode を起動します。
mkdir sample
cd sample
code .
VSCode が起動します。ターミナルを起動(ctrl+@, US キーボードの場合は、ctrl+`)して、シェルが bash であることを確認します。
既存の git のプロジェクトを VSCode から開きたい場合は、git clone コマンドで、ダウンロードする必要があります。
また、後述しますが、Ubuntu のファイルもエクスプローラで参照できるので、
注意!
Ubuntu から、/mnt/c/
にアクセスすることで、Windows のファイルにもアクセスできます。
しかし、この下で VSCode の Remote 機能で起動するのは、パフォーマンスが悪くなったり、ファイルの監視ができないため、ファイルを追加変更したときなどの動作に問題が発生します。
VSCode の Remote 機能 を利用する場合は、ホームディレクトリ(cd ~
でアクセスできる)以下に作成しましょう。
エクスプローラからのアクセス
エクスプローラから、\\wsl$\Ubuntu\
にアクセスすることで、Ubuntu のファイルを参照することができます。
Tortoises git も引き続き使うことができます。
WSL2 に Docker をインストールする
Docker Desktop をインストールすることでも良いのですが、個人利用またはスモールビジネス向けなど以外は有料化したので、Ubuntu 版の Docker を入れることとします。
参考: Install Docker Engine on Ubuntu | Docker Documentation
sudo で、管理者権限でのコマンドを実行します。パスワードを聞かれたら、WSL で Ubuntu をインストールしたときに設定したパスワードを入れてください。
apt のパッケージ一覧のアップデート
$ sudo apt update
必要なライブラリの導入
下記ライブラリが必要ですが、既に入っていると思います。ですが、一応念の為実行しておきます。
$ sudo apt install \
ca-certificates \
curl \
gnupg \
lsb-release
Docker の証明書をダウンロードして登録する
apt で Docker のサイトからパッケージを入手するのに必要な証明書を導入します。
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
apt に Docker のリポジトリを追加する
$ echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
apt を利用して、Dockerをインストールする
$ sudo apt update
$ sudo apt install docker-ce docker-ce-cli containerd.io
docker を起動する。
$ sudo service docker start
$ sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:bfea6278a0a267fad2634554f4f0c6f31981eea41c553fdf5a83e95a41d40c38
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
(以下略)
sudo がなくても Docker コマンドが実行できるようにする
docker の各コマンドを実行するには、管理者権限が必要です。自分のユーザーを linux の docker グループに追加することで、sudo なしで実行できるようになります。
$ sudo gpasswd -a $USER docker
docker を起動している場合は、dockerの再起動とユーザーの再ログインが必要です。
$ sudo service docker restart
ubuntu のウィンドウを閉じて、再度開きましょう。
sudoなしで実行
$ docker run hello-world
最後に
システム開発では、Bash などのシェルが便利で、開発環境として macOS を利用することが多いです。
WSL2 を利用することで、Windows内に Linux 環境が容易に準備でき、Hyper-V等を利用するよりも、パフォーマンス性能が高いです。
さらに、WSLでは 開発プロジェクトに合わせて環境を切り替えることもできます。
今まで、Windowsだけを使っていた方には、Linux の知識を学ぶ必要がありますが、開発に従事するとLinuxとは離れられないことも多いでしょう。これを学習のきっかけにしてもよいのではないでしょうか?