1. Docker Desktop をアンインストール
WSL2 + Ubuntu 20.04 インストール済みの場合、Ubuntuをアンインストール
※スタートメニューから右クリックでアンインストール可能
2. WSL2 + Ubuntu 20.04 インストール
Microsoft Store からUbuntu 20.04 LTSインストール
3. Ubuntu 20.04 on WSL2
3.1. プロキシ設定
export HTTP_PROXY=プロキシURL
export HTTPS_PROXY=プロキシURL
$ sudo vi /etc/apt/apt.conf
Acquire::http::Proxy "プロキシURL";
Acquire::https::Proxy "プロキシURL";
3.2. DNS設定
$ sudo vi /etc/resolv.conf
nameserver {DOSでnslookupで表示される既定のサーバーのIPアドレス}
3.3. 次回起動時にresolv.confの再設定を不要にする
sudo apt-get install resolvconf
sudo mkdir -p /etc/resolvconf/resolv.conf.d
sudo vi /etc/resolvconf/resolv.conf.d/base
nameserver {DOSでnslookupで表示される既定のサーバーのIPアドレス}
4. Linuxシステムアップデート
sudo apt update && sudo apt upgrade -y
5. Linuxbew の動作に必要な curl, git, ruby をインストール
・zlib1g-dev, libssl-dev, libbz2-dev, libsqlite3-dev, libffi-dev, liblzma-dev は Python ビルドに必要
・add-apt-repository コマンドを使うために software-properties-common もインストールしておく
・https通信を可能にするために apt-transport-https, ca-certificates もインストールしておく
$ sudo apt install -y vim curl git ruby \
zlib1g-dev libssl-dev libbz2-dev libsqlite3-dev libffi-dev liblzma-dev \
software-properties-common apt-transport-https ca-certificates build-essential
6. Linuxbrew (Linux版の Homebrew パッケージマネージャ) 導入
Linuxbrew を使うことで最新の開発ツール等を導入しやすくなる
# PATHを通す
$ echo 'export PATH="/home/linuxbrew/.linuxbrew/bin:$PATH"' >> ~/.bashrc
$ echo 'export HTTP_PROXY=プロキシURL' >> ~/.bashrc
$ echo 'export HTTPS_PROXY=プロキシURL' >> ~/.bashrc
$ source ~/.bashrc
$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"
7. Linuxbrew で各種開発ツールを導入
curl や git などは、最新版を使う方が良いため、改めて Linuxbrew で導入しなおす
$ brew install curl git wget gcc zlib libzip bzip2 readline openssl pkg-config autoconf
Linuxbrew で anyenv 導入
$ brew install anyenv
$ anyenv install --init
Do you want to checkout ? [y/N]: <= y
anyenv 初期化スクリプトを .bashrc に記述
$ echo 'eval "$(anyenv init -)"' >> ~/.bashrc
$ source ~/.bashrc
anyenv update plugin の導入
$ mkdir -p $(anyenv root)/plugins
$ git clone https://github.com/znz/anyenv-update.git $(anyenv root)/plugins/anyenv-update
$ anyenv update
$ anyenv -v
anyenv 1.1.1
8. anyenv を使って pyenv 導入
pyenv を使うことで、複数バージョンの Python 環境を構築できる
$ anyenv install pyenv
$ exec $SHELL -l
pyenv で Python 3.9 をインストール
$ pyenv install 3.9.10
pyenv では 2系 と 3系 を同時に指定できる
python => 3.9.10
$ pyenv global 3.9.10
現在選択されているバージョンを確認
$ pyenv versions
* 2.7.18 (set by /home/user/.anyenv/envs/pyenv/version)
* 3.7.7 (set by /home/user/.anyenv/envs/pyenv/version)
$ python3 --version
3.9.10
9. pip パッケージマネージャを更新しておく
$ pip3 install --upgrade pip setuptools
$ pip3 --version
pip 20.1.1 from /home/user/.anyenv/envs/pyenv/versions/3.7.7/lib/python3.7/site-packages/pip (python 3.7)
10. AWS CLI を導入
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
Credentialsの設定
aws configure
AWS Access Key ID [None]: ********
AWS Secret Access Key [None]: ********
Default region name [None]: ap-northeast-1
Default output format [None]: json
11. Docker (Community Edition) インストール
$ 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 update && sudo apt install -y docker-ce
dockerデーモン起動
$ sudo service docker start
・WSL2 では、デーモンをスタートアップに登録することができない
・スタートアップに登録したい場合は、Windowsのタスクスケジューラに登録する必要がある
参考: https://qiita.com/Ningensei848/items/75adeb29bb143633d60c
・Windows再起動の度に sudo service docker start すれば良いだけなのでスタートアップ登録までは行わない
・WSL2 には cgroup 用ディレクトリがデフォルトで作られていないため作成しておく
これをしておかないと Docker でプロセスのグループ化が必要になったときにエラーが起きる
$ sudo mkdir -p /sys/fs/cgroup/systemd
$ sudo mount -t cgroup -o none,name=systemd cgroup /sys/fs/cgroup/systemd
12. dockerプロキシ設定(設定を追記する)
$ sudo vi /etc/default/docker
# Set Proxy
export http_proxy='プロキシURL'
export HTTP_PROXY="${http_proxy}"
export https_proxy="${http_proxy}"
export HTTPS_PROXY="${http_proxy}"
export no_proxy='127.0.0.1,localhost'
export NO_PROXY="${no_proxy}"
プロキシ設定確認
sudo service docker restart
sudo docker info | grep -i proxy
13. サービスをUbuntu起動時に実行させる
echo 'sudo service resolvconf start' >> ~/.bashrc
echo 'sudo service docker start' >> ~/.bashrc
14. Dockerを sudo なしで実行可能にする場合
※ カレントユーザーをdockerグループに所属させた上で docker.sock へのグループ書き込み権限を付与すればよい
$ sudo gpasswd -a $USER docker
$ sudo chgrp docker /var/run/docker.sock
$ sudo service docker restart
WSL再起動しないと反映されない(PowerShell)
PowerShell$ wsl.exe --shutdown
参考:
[WSL2 + Ubuntu 20.04 + Docker 環境構築]
https://qiita.com/amenoyoya/items/ca9210593395dbfc8531