0
1

More than 1 year has passed since last update.

WSL2 + Ubuntu 20.04 + Docker 環境構築手順

Posted at

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
0
1
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
0
1