skydum

個人的な作業記録とか備忘録代わりのメモ

wsl2(Ubuntu)にDocker Engineをインストール

wsl2 + docker engineをインストールする

以前から気になっていたwsl2上でdockerを動かして、vscodeからdevcontainerでアクセスして開発を行う環境を作った。 今回は商用目的での利用も考えているのでDocker Desktopを利用せずDocker EngineをインストールしてDockerを利用するように構成する。

長くなりそうなのでwsl + Docker Engineのインストールまでを記載。

Docker Desktopを利用する場合で商用利用をするときは基本的に有償となる。
Docker is Updating and Extending Our Product Subscriptions

wsl2のインストール

wsl2のインストールから自動でUbuntuをインストール

ここでは既定のUbuntuを自動が入るようになっていますが、インストールされる既定の Linux ディストリビューションを変更するに記載されている、コマンドで既定でインストールされるディストリビューションを変更可能です。

  1. スタートメニューを開いて「power」と入力すると「Windows PowerShell」を起動できますので、「管理者として実行する」を選択してください。

  2. ターミナルが開いたら「wsl --install」を入力するとwsl2が有効になり、Ubuntuのインストールまで完了します。

  3. PCの再起動を求められたら、PCを再起動して再度ログオンしてください。
    次回ログオン時に自動的にUbuntuのインストールが開始されます。

  4. Ubuntuのインストールが開始されるとUbuntuを起動した際に利用されるユーザー名を求められるので、任意のユーザー名を入力してください、その後パスワードを決める必要がありますので、2回同じパスワードを入力するとUbutuのインストールが完了して利用可能となります。

  5. インストール完了

UbuntuにDockerをインストール(Docker Desktopは利用しない)

Docker Engineのインストールと設定

  • スタートメニューからUbuntuを起動する。
  • 古いバージョンのDockerが入っている可能性があるので、以下のコマンドを実行してアンインストールを実行する
$ sudo apt-get remove docker docker-engine docker.io containerd runc
  • Dockerをインストールするのに利用するのに利用するプログラムをインストールする
$ sudo apt-get update
$ sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
  • Dockerの公式GPG keyをインストールする(1コマンドずつ実行してください)
$ sudo mkdir -p /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
  • 実行しなくても問題はありませんが、念のためdocker.gpgがダウンロードできているか確認する。
    以下のコマンドを実行してdocker.gpgが表示された場合は問題ありません。
$ ls /etc/apt/keyrings/
  • Dockerのインストールに利用するリポジトリの設定を追加する
$ echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  • Docker Engineをインストールする(1コマンドずつ実行してください)
    途中でDo you want to continue? [Y/n]のように聞かれたときはYを入れてください。
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
  • Dockerを起動する(WSLではサービスでDockerが自動で起動しないので手動で起動する必要がある)
$ sudo service docker start
$ sudo service docker status

 * Docker is running ←のように表示されると正常に起動しています
  • 試しにdockerを使ってみる
$ sudo docker run hello-world

Ubuntuへログイン時にDockerを自動起動する設定を追加

セキュリティ的にあんまり良くないかもしれないため、問題ない方のみ実行してください。
以下の4個のステップを実行するとUbuntuにログイン時に自動的にdockerのサービスが起動するようになります

  1. Ubuntuのデフォルトのエディタをvimに変更する(必要に応じて実行)
  2. ユーザーの.bashrcにDockerを起動するコマンドを追記する
  3. パスワード無しでsudo service docker startできるようにする
  4. sudoなしでdockerコマンドを使えるようにする

Ubuntuのデフォルトのエディタをvimに変更する(必要に応じて実行)

nanoは使い方がわからないのでvimに変更する

$ sudo update-alternatives --set editor /usr/bin/vim.basic

ユーザーの.bashrcにDockerを起動するコマンドを追記する

  • 以下の内容を全てをログインするユーザーの.bashrcの一番最後に追記してください(試しにChatGPTにお願いして書いてもらった)
# サービス名
service_name=docker

# サービスが起動しているかチェック
status=$(service $service_name status | grep "Active:" | awk '{print $2}')

if [ "$status" != "(running)" ]; then
  service $service_name start > /dev/null 2>&1
fi

パスワード無しでsudo service docker startできるようにする

$ visudo

ファイルが開いたら最終行に以下を追加してファイルを保存

%docker ALL=NOPASSWD: /usr/sbin/service docker start

sudoなしでdockerコマンドを使えるようにする

  • sudo無しでdockerコマンドを使えるようにしたいユーザー名を指定する(次回ログイン時より有効になります)
$ sudo usermod -aG docker ユーザー名