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のインストール
- コマンド実行1回でwsl2をインストールする、新しいやり方
WSL を使用して Windows に Linux をインストールする - 古いやり方で手順を踏んでwslをインストールする
以前のバージョンの WSL の手動インストール手順
wsl2のインストールから自動でUbuntuをインストール
ここでは既定のUbuntuを自動が入るようになっていますが、インストールされる既定の Linux ディストリビューションを変更するに記載されている、コマンドで既定でインストールされるディストリビューションを変更可能です。
スタートメニューを開いて「power」と入力すると「Windows PowerShell」を起動できますので、「管理者として実行する」を選択してください。
ターミナルが開いたら「wsl --install」を入力するとwsl2が有効になり、Ubuntuのインストールまで完了します。
PCの再起動を求められたら、PCを再起動して再度ログオンしてください。
次回ログオン時に自動的にUbuntuのインストールが開始されます。Ubuntuのインストールが開始されるとUbuntuを起動した際に利用されるユーザー名を求められるので、任意のユーザー名を入力してください、その後パスワードを決める必要がありますので、2回同じパスワードを入力するとUbutuのインストールが完了して利用可能となります。
インストール完了
UbuntuにDockerをインストール(Docker Desktopは利用しない)
- 以下のページに記載の順番でコマンドを実行する
Install Docker Engine on Ubuntu
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のサービスが起動するようになります
- Ubuntuのデフォルトのエディタをvimに変更する(必要に応じて実行)
- ユーザーの.bashrcにDockerを起動するコマンドを追記する
- パスワード無しでsudo service docker startできるようにする
- 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 ユーザー名