141
Help us understand the problem. What are the problem?

posted at

updated at

WSL2 + VSCode + Docker 開発環境

概要

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 共通の作業です。

  1. コントロールパネルを開きます。

    2020-09-11_09h44_50.png

  2. 「Windows の機能を有効化または無効化」を開きます。

    2020-09-11_09h46_10.png

  3. 「Linux 用 Windows サブシステム」と「仮想マシンプラットフォーム」にチェックを入れ、OK ボタンを押します。

    2020-09-11_09h48_44.png

    image.png

  4. インストールが完了したら、再起動する必要があります。

    これは、Linux が動作する環境だけのセットアップで、これに CentOS や Ubuntu ディストリビューションを入れる必要があります。

  5. コマンドプロンプトで 既定のバージョンを '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 で検索します。

(下記画像では、すでにインストールされています)

2020-09-11_10h06_04.png

インストールしたら、一旦 VSCode を閉じます。

Ubuntu から Visual Studio Code を起動する

Windows のスタートメニューから、[Ubuntu]を選択するとターミナルが起動します。

ここに、空のディレクトリを作って、そこで VSCode を起動します。

mkdir sample
cd sample
code .

VSCode が起動します。ターミナルを起動(ctrl+@, US キーボードの場合は、ctrl+`)して、シェルが bash であることを確認します。

2020-09-30_14h57_36.png

既存の 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とは離れられないことも多いでしょう。これを学習のきっかけにしてもよいのではないでしょうか?

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
141
Help us understand the problem. What are the problem?