こんにちは。

インフラ関連作業をしております、Fです。

 

今回は、開発ブログに書く機会を頂きましたので書きたいと思います。

ネットなどでも「Docker」という文字を何かと目にすることが
多くなっておりましたので、さわってみました。

WSL2(ubuntu)に「Docker」をインストールした時のメモ書きになります。

2021年05月時点の情報です。

すでに「Docker」を使用した業務をされている方にはご存じのことばかりですが
少しお付き合い頂けましたら幸いです。

 

「Docker」の環境には、Linuxカーネルが必要とのことです。

仮想、物理いずれかに、Linuxのディストリビューションをインストールすることも
考えましたが、今回は、手軽そうでしたので、Windows Subsystem for Linux(以降 WSL)2にしてみました。

 

WSL(Windows Subsystem for Linux)2(ubuntu)の準備

WSLでは、「Docker」が動かないようですので、WSL2を準備します。

準備は、以下を参考にしました。

Windows 10 用 Windows Subsystem for Linux のインストール ガイド 手動インストールの手順

WSL2を使用するための要件
上記サイトに記載

x64 システムの場合:バージョン 1903 以降、ビルド 18362 以上。
ARM64 システムの場合:バージョン 2004 以降、ビルド 19041 以上。

事前準備として、使用するPCの仮想化機能を有効にします。
仮想化機能の有効化は、使用しているPCによって異なりますので、
メーカーのHPなどをご確認ください。

UEFIもしくはBIOSで有効にする項目は、
Intel系は、Intel VT(Intel Virtualization Technology)
AMD系は、 AMD-V(AMD Virtualization)
です。

 

「Linux用Windowsサブシステム」「仮想マシン プラットフォーム」の有効化

コマンドで実行する方法とWindowsの機能の有効化または無効化で実行する方法の2種類あります。

 

コマンド実行)
Windows PowerShellを管理者権限で起動し以下コマンドを実行する

「Linux用Windowsサブシステム」
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

「仮想マシン プラットフォーム」
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

 

Windowsの機能の有効化または無効化)

 

上記実行後は、OSを再起動します。
OS再起動の際に、更新プログラムの適用があります。

 

Linuxカーネル更新プログラム パッケージのダウンロードとインストール

こちらからダウンロードしたものをインストールしてください。

x64の場合

arm64の場合

私の環境では、「x64」を実行しました。

 

実行する環境をWSLからWSL2に変更する

Windows PowerShellを管理者権限で起動し以下コマンドを実行する
wsl –set-default-version 2

実行画面

Microsoft Storeから、使用するLinuxディストリビューションを入手します。

今回は、ubuntu20.04LTSにしました。

インストール完了後に以下メッセージが表示されます。

こちらで起動してもよいです。

 

WSL2の起動は、スタートメニューから行えます。

インストール直後の起動時には、ユーザーとパスワードの入力が必要になります。

インストールしたubuntu20.04LTSがWSL2になっているかを確認します。

Windows PowerShellを管理者権限で起動し以下コマンドを実行する
wsl –list –verbose

実行画面

 

WSL2 ubuntuを起動している状態で、エクスプローラのアドレスバーに「\\wsl$」と
入力すると、WSL2 ubuntuのデータを参照することができます。

 

WSL2の準備はここまでです。

 

ubuntuに「Docker」をインストール

ここからは、ubuntuに「Docker」をインストールします。

こちらのサイトを参考にしました。

こちら以外にも検索することでいろいろな方が掲載されているサイトが検索結果に現れます。
いろいろ拝見させて頂きました。ありがとうございました。

準備として、インストール済みパッケージ一覧の更新とパッケージの更新、
必要パッケージのインストール行います。

実行したコマンド

パッケージ一覧更新
sudo apt-get update

パッケージの更新
sudo apt-get upgrade

必要パッケージのインストール
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 apt-key add –

「Docker」のPPAを追加
sudo add-apt-repository “deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable”

上記実行後に再度パッケージ一覧更新
sudo apt-get update

「Docker」関連のインストール
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose

「Docker」のコマンドをsudoなしで実行できるように、「Docker」グループに追加
sudo gpasswd -a $USER docker

こちらでも可能
sudo usermod -aG docker $USER

ここまで実行したら一旦、ubuntuを終了する
exit

もう一度WSL2のubuntuを起動します。

「Docker」のサービスを起動します。
sudo service docker start

「Docker」が動くかを確認します。
docker run hello-world

こちらのような、メッセージ表示されます。

Unable to find image ‘hello-world:latest’ locally
latest: Pulling from library/hello-world
b8dfde127a29: Pull complete
Digest: sha256:f2266cbfc127c960fd30e76b7c792dc23b588c0db76233517e1891a4e357d519
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」が起動するまでを確認しました。

 

操作に詰まるところが出るかと思い、下調べをしたおかげで、

思った以上に詰まることなく行うことができました。

 

機会があれば、いろいろといじってみたいと思います。

 

拙文をお読み頂きありがとうございました。