こんにちは、ウチイダです。
前回の記事で、Windows TerminalからWSLを使いやすくする設定を行いました
Windows Terminal起動時にWSLが開くようにする設定と、カラープロファイルを設定しただけですが。。。
ですがこれだけの設定で、WSLを使いたくなったらWindows キーでスタートメニューを開いて、「wt」と入力した後エンターを押すだけで、視認性の高いUbuntuのターミナルが表示できるようになりました。
前回の記事はこちら。
さて今回は、WSL2 のUbuntu にDocker をインストールしていきます。
前提となる動作環境は以下の通りです。
- Windwos 11 Pro (21H2 ビルド 22000.120)
- WSL カーネル バージョン: 5.10.16
- Windows Terminal バージョン: 1.9.1942.0
Docker 公式ドキュメントによると、リポジトリからインストールするのがおすすめの方法ということです。
https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository
上記のページの手順に沿って、作業を進めていきます。
インストール前の準備
とりあえず、パッケージをアップデートして最新の状態にしましょう。
$ sudo apt-get update
$ sudo apt-get upgrade
続いて、リポジトリをHTTPS経由で利用できるようにするためのパッケージをインストールします。
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
Docker のリポジトリを利用するために、GPG鍵を追加します。
正直、この辺よくわかっていません。。。セキュリティのための必要事項だ、くらいの雑な理解をしています。
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
前準備の最後の手順です。Docker リポジトリ(安定版、Stable)を追加します。
$ echo "deb [arch=amd64 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
Dockerのインストールと動作確認
追加したリポジトリから、Docker エンジンをインストールします。
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
インストールできたか確認してみます。
$ docker --version
Docker version 20.10.8, build 3967b7d
バージョン情報が表示されれば、パッケージのインストールは成功です。
docker コマンドを実行する前に、Docker デーモンを起動しておきます。
$ sudo service docker start
* Starting Docker: docker
## 起動確認
$ sudo service docker status
* Docker is running
ちなみに、サービスを起動し忘れてDockerコマンドを実行すると、以下のようなエラーが出ます。
docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.
Docker デーモンが起動できたら、ようやく動作確認です。hello-world コンテナを動かしてみます。
$ sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
b8dfde127a29: Pull complete
Digest: sha256:df5f5184104426b65967e016ff2ac0bfcd44ad7899ca3bbcf8e44e4461491a9e
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/
## 本当に実行できたのか、コンテナを確認します
$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f370ebbed892 hello-world "/hello" 10 seconds ago Exited (0) 24 seconds ago goofy_gates
WSL上で、dockerコンテナを動かすことができました!
現在の状態では手動でDocker デーモンを起動する必要があり、最初に動かすときに手間がかかります。
WSLはSystemd が動いていないため、サービスの自動起動などができなくて不便ですね。
このあたりの解決方法はまた別の機会に。
今回の内容は以上です。
あなたのお役に立てればうれしいです。