こんな悩みを解決できる記事を書きました!
僕は現役フリーランスエンジニア(歴8年)で、資格は13個保有しています。
結論、WSL2(Ubuntu)にDockerをインストールする方法は非常に簡単です。
WSL2(Ubuntu)を利用すれば、Linux環境でDockerを使用できるのでかなり便利です。
本記事を読めば、WSL2(Ubuntu)にDockerをインストールする方法が理解できるので早速見ていきましょう!
サクッと読み終わるので、ぜひ最後まで読んでくださいね♪
WSLとは
WSL(Windows Subsystem for Linux)は、Windows10以降で使えるWindows上のLinux環境です。
WindowsでLinux環境を使用できるので、わざわざ環境構築する必要がありません。
また、LinuxOSはMicrosoftストアで無料提供されているので簡単に入手できます。
Linux環境って使う機会が多いので、僕もかなり重宝してます。
WSL1とWSL2の違い
WSLにはWSL1とWSL2の2種類があります。
WSL2はWSL1の上位互換で、WSL1では使用できなかったDockerなどにも対応しています。
WSL1 | WSL2 |
---|---|
2016年にリリース LXCoreを使用 | 2019年にリリース WSL1を大幅に改善 Linuxカーネルを搭載 DockerやFUSEも使用可能 |
WSL2のインストールに必要な前提条件
結論、以下の条件を満たしていればWSL2のインストールは可能です。
- Windows10(64bit版)以降 ※32bit版は不可
- x64システムの場合は、バージョンが1903以降でビルドが18362以上である
- ARM64システムの場合は、バージョンが2004以降でビルドが19041以上である
- Hyper-Vに対応している
Windowsのバージョンとビルドは、「システム」⇒「詳細情報」から確認できます。
また、Hyper-Vに対応していないとWSL2は使用できません。
なぜWSL2にDockerをインストールするのか?
結論、WSL2を利用することでPC自体ににDockerをインストールしなくて済むからです。
WindowsであればDocker for Windowsが用意されていますが、速度が遅いなどの難点があります。
PC自体にDockerをインストールしたくない場合や、Linuxでサクサク快適にDockerを使用したい場合にWSL2はおすすめです。
WSL2にDockerをインストールする方法
では早速、WSL2にDockerをインストールする方法を解説します。
WSL2(Ubuntu)のインストール
まずは、WSL2(Ubuntu)のインストールを行います。
コマンドプロンプトを管理者権限で開きます。
$ wsl --install
WSLをインストールします。
$ wsl --list --online
インストールできる有効なディストリビューションの一覧を次に示します。
既定の分布は ' * ' で表されます。
'wsl --install -d <Distro>'を使用してインストールします。
NAME FRIENDLY NAME
* Ubuntu Ubuntu
Debian Debian GNU/Linux
kali-linux Kali Linux Rolling
openSUSE-42 openSUSE Leap 42
SLES-12 SUSE Linux Enterprise Server v12
Ubuntu-16.04 Ubuntu 16.04 LTS
Ubuntu-18.04 Ubuntu 18.04 LTS
Ubuntu-20.04 Ubuntu 20.04 LTS
インストール可能なディストリビューションを確認します。
$ wsl --install -d Ubuntu-20.04
Ubuntuをインストールします。
$ wsl -l -v
NAME STATE VERSION
* Ubuntu Stopped 2
Ubuntu-20.04 Running 2
インストールの確認をします。
$ wsl --set-default Ubuntu-20.04
# 再度確認
$ wsl -l -v
NAME STATE VERSION
* Ubuntu-20.04 Running 2
Ubuntu Stopped 2
Ubuntu20.04をデフォルトに設定します。
$ ubuntu2004 config --default-user root
デフォルトユーザをrootに変更します。
やらなくてもOKですが、デフォルトがrootユーザだと色々楽です(笑)。
WSL2にDockerをインストール
次に、WSL2にDockerをインストールします。
$ apt-get remove docker docker-engine docker.io containerd runc
古いDockerを削除します。
$ apt-get update
$ apt-get install -y \
ca-certificates \
curl \
gnupg \
lsb-release
パッケージの更新&インストールを行います。
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
Dockerの公式GPGキーを追加します。
$ 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
stableのリポジトリを追加します。
$ apt-get update
パッケージを再度更新します。
$ apt-get install -y docker-ce docker-ce-cli containerd.io
Dockerをインストールします。
$ service docker start
Dockerを起動します。
$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:e18f0a777aefabe047a671ab3ec3eed05414477c951ab1a6f352a06974245fe7
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
Dockerイメージのhello-worldを実行し、↑のような実行結果になればOKです。
$ curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
Docker Composeをインストールします。
$ chmod +x /usr/local/bin/docker-compose
Docker Composeの権限を変更します。
$ docker-compose -v
docker-compose version 1.29.2, build 5becea4c
インストールが確認できればOKです。
Dockerの自動起動
本手順は任意ですが、Dockerを自動起動させると楽なので解説しておきます。
$ vi ~/.bashrc
.bashrcを開きます。
if test $(service docker status | awk '{print $4}') = 'not'; then
sudo /usr/sbin/service docker start
fi
↑のコードを.bashrcの最後に追記すればOKです。
よくある質問
WSLとは何ですか?
Windows10以降で使えるWindows上のLinux環境です。
WSL1とWSL2の違いは何ですか?
WSL2はWSL1の性能を大幅に改善したバージョンで、Dockerなどにも対応しています。
WSL2を使うメリットは何ですか?
Linux環境に各種ツールをインストールできるので、PC自体にツールをインストールする必要がありません。
また、Linux環境を簡単に利用できるのも大きなメリットです。
エクスプローラーでUbuntu内のファイルは見れますか?
エクスプローラーで「\\wsl$」と入力すれば見れます。
まとめ
今回は、WSL2(Ubuntu)にDockerをインストールする方法について解説しました。
以下が本記事のまとめになります。
- おすすめ本
Dockerの勉強なら「Docker/Kubernetes 実践コンテナ開発入門
最後までお読みいただき、ありがとうございました!
- クソおすすめ本
海外のエンジニアがどういった思考で働いているかが理解できます。
海外に行く気はないけど海外エンジニアの動向が気になる雑魚エンジニアにおすすめです(本当におすすめな本しか紹介しないのでご安心を)。