LoginSignup
4
0

More than 1 year has passed since last update.

Docker (ver20.10.12)インストール for WSL2

Last updated at Posted at 2022-02-11

WSL2上にFESSの環境を構築しようと思い立った。そこで本記事ではまずUbuntu20.04(WSL2)に対してDockerの環境を構築する備忘録を記す。

環境構築する上でいくつかの記事を参照した。参照し、環境構築を進める上でWSL特有のエラーに直面した。本記事ではそれらの対処法についても触れている。いろいろとエラーメッセージを見た上で対処したのだが、それらエラーメッセージに関しては混乱を避けるために本記事では触れていない。詳細なメモは個人のGitHubに残した。
(Docker Desktopが有償化されたので、ある程度需要があるかな? 2022/02/11)

WSL上にFESSを構築する記事はこちら
https://qiita.com/YUKI-SOKENDAI/items/bfcbf5f264cc28588d5b

目次

  1. 開発環境
  2. インストール
    1. インストール手順
    2. インストール前の準備
    3. genieのインストール
    4. Dockerのインストール
    5. Dockerの起動と動作確認
  3. セットアップ用シェルスクリプト
  4. おわりに
  5. 参考記事

開発環境

  • Windows10 home
  • Ubuntu 20.04 on WSL2

インストール

インストール手順

  1. インストール前の準備
  2. genieのインストール
  3. Dockerのインストール
  4. Dockerの起動と動作確認

インストール前の準備

https経由でapt-getするための事前準備。

sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common

Dockerをapt-getでインストールするためにインストールリストを追加している?。

sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
sudo apt-get update
sudo apt-cache policy docker-ce

genieのインストール

Dockerをインストールする前にgenieをインストールする。
これはDockerをWSL2上で起動する際に重要となる。Dockerを起動する際はsystemctl(sytemd)がPID1にセットされている必要があるようだ。しかし、デフォルトではPID1にセットされておらず、起動時にエラーとなる。そこでgenieを先にインストールしとく。
genieをmakeする際に.NET関連のコマンド・パッケージが必要となる。そのため、環境構築は以下のような流れで進めていく。

  1. 依存しているパッケージ(.NETなど)のインストール
  2. genieのインストール & make install

依存しているパッケージ(.NETなど)のインストール

apt-getをしても.NETのインストールが出来ない(恐らく、インストールのリストに.NETがない)。
apt-getのインストールリストに.NET関連を追加する。

## install daemonize
sudo apt-get install -y daemonize
## install .NET package
sudo apt-get install -y gpg 
wget -O - https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor -o microsoft.asc.gpg
sudo mv microsoft.asc.gpg /etc/apt/trusted.gpg.d/
wget https://packages.microsoft.com/config/ubuntu/20.04/prod.list
sudo mv prod.list /etc/apt/sources.list.d/microsoft-prod.list
sudo chown root:root /etc/apt/trusted.gpg.d/microsoft.asc.gpg
sudo chown root:root /etc/apt/sources.list.d/microsoft-prod.list

.NETのリストが追加されたのでapt-getでinstallする。

sudo apt-get update
sudo apt-get install -y apt-transport-https
sudo apt-get update
sudo apt-get install -y dotnet-runtime-6.0
sudo apt-get install -y dotnet-sdk-6.0
sudo apt-get install -y dotnet-sdk-5.0

genieのインストール

genieをgithubからcloneする。

sudo apt-get install -y make
git clone https://github.com/arkane-systems/genie.git

clone後にgenieディレクトリへ移動し、makeする。
makeのオプションコマンドはMAKEFILEに書かれているので、中身を見ると良い。
install-localというオプションがあるので、makeで実行。
インストールにミスったら"make clear"してから、再度"make install-local"すれば良い。

cd genie
sudo make install-local
sudo apt-get install -y systemd-container

genieのmake installが完了したら、以下のコマンドを実行。
ターミナル立ち上げる度に実行する必要があるため.bashrcに追加しとくと良い。

genie -s

systemdがPID1になっているか確認する。

ps aux

PID1にsystemdというのがセットされていればOK。デフォルトでは/initがセットされている。

Dockerインストール

sudo apt-get install -y docker-ce

Dockerの起動と動作確認

sudo systemctl status docker

セットアップ用シェルスクリプト

以上の行程を一連のシェルスクリプトにまとめました。

## 01 : docker installation for WSL ubuntu 20.04 LTS
## written by Y.Abe (2022/02/07)

# update first
echo -e "\n\n*** Update system before installing docker"
sudo apt update

echo -e "\n\n*** Docker installing prepareation"
# preparation for apt-get to install via https
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
# add GPG key of docker repository(public)
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# add docker repository to APT source
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
# update package data base (from added repository via Docker repository??)
sudo apt-get update
# check installed from Docker repository
apt-cache policy docker-ce

# Finally: docker install
echo -e "\n\n*** Start Docker installation"
sudo apt-get install -y docker-ce
echo -e "*** End Docker installation process"

# check booting docker
echo -e "\n\n*** Check booting docker"
sudo systemctl status docker
#-> maybe faild booting docker


# setup for well booting docker on WSL
## install daemonize
sudo apt-get install -y daemonize
## install .NET package
sudo apt-get install -y gpg 
wget -O - https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor -o microsoft.asc.gpg
sudo mv microsoft.asc.gpg /etc/apt/trusted.gpg.d/
wget https://packages.microsoft.com/config/ubuntu/20.04/prod.list
sudo mv prod.list /etc/apt/sources.list.d/microsoft-prod.list
sudo chown root:root /etc/apt/trusted.gpg.d/microsoft.asc.gpg
sudo chown root:root /etc/apt/sources.list.d/microsoft-prod.list

sudo apt-get update
sudo apt-get install -y apt-transport-https
sudo apt-get update
sudo apt-get install -y dotnet-runtime-6.0
sudo apt-get install -y dotnet-sdk-6.0
sudo apt-get install -y dotnet-sdk-5.0

# install genie
sudo apt-get install -y make
git clone https://github.com/arkane-systems/genie.git
cd genie
sudo make install-local
sudo apt-get install -y systemd-container # Ubuntu18.04 no need this command
esho "*** Finish setup genie\n\n"


# asign systemd to PID1
echo -e "***\n\nBefore switch PID1"
ps aux
genie -s
echo "genie -s" >> ~/.bashrc
echo -e "***\n\nAfter switch PID1"
ps aux

# check booting docker again
echo -e "\n\ncheck docker booting again"
sudo systemctl status docker
#-> maybe succeeded booting docker

おわりに

本記事ではWSL2上のUbuntu 20.04にDockerのインストール、環境構築を行う備忘録を残した。Dockerはバージョン20.10.12を使用した。
本記事にて示した方法に不備、間違いがあればじゃんじゃんコメントください。

参考記事

  1. Ubuntu20.04 に Docker を導入する
  2. Ubuntu 20.04へのDockerのインストールおよび使用方法
  3. 【WSL2】systemctlが動かない問題をきちんと解決する
  4. Ubuntu に .NET SDK または .NET ランタイムをインストールする
  5. APT のトラブルシューティング(.NETのパッケージがaptで見つからない)
4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0