Docker Desktop なしで Docker Image の開発環境を PC(Windows)に作りたかった
Docker Desktop が有償になってしまったので、WSL2(Ubuntu20.04) + Docker で凌ぐことに。
おまけで、最低限の Python 環境構築する手順まで記載しています。
前提
OS : Windows 10 Pro or Enterprise 21H1
Editor : VSCode
事前準備
VSCode, PowerShell, Windows Terminal のインストール
-
コマンドプロンプトを開いて下記を実行する
winget install Microsoft.VisualStudioCode winget install Microsoft.WindowsTerminal winget install Microsoft.PowerShell
※途中、「すべてのソース契約条件に同意しますか?」と表示されるので「Y」を入力します。
WSL2 と Ubuntu 20.04 LTS インストール
WSL と Ubuntu のインストール
-
管理者権限で Windows Terminal を起動する(Windows Terminal を右クリック -> その他 -> 管理者として実行)
-
Power Shell を開いて下記を実行する
wsl --install -d Ubuntu-20.04
-
途中、ユーザー名とパスワードを聞かれるので、任意のものを設定する
-
Windows OS を再起動する
WSL の更新
-
下記コマンドを実行して現在の WSL カーネルのバージョンを確認する
wsl --status
-
下記コマンドを実行して WSL の更新、再起動を行う
wsl --update wsl --shutdown
-
下記コマンドを実行して現在の WSL カーネルのバージョンを確認する
wsl --status カーネル バージョン: 5.10.60.1
Ubuntu のアップデートと再起動
-
Windows Terminal で WSL(Ubuntu-20.04)を開き下記コマンドを実行する
sudo apt upgrade wsl.exe --shutdown
WSL と Ubuntu の設定
WSL で使用するメモリ量の制限
-
C:\Users\<UserName>に .wslconfig という名前のファイルを作成する
-
.wslconfig ファイルの中身を下記のようにして保存する
[wsl2] memory=2GB
※設定値は、PC に搭載しているメモリ量と相談して決めてください。筆者は、16GB メモリ搭載の PC で 2GB に設定しています。また、WSL のメモリが足りないようであれば定義増やすようにしてください。
-
WSL を再起動する
wsl.exe --shutdown
Ubuntu の日本語設定
-
下記のコマンドを Ubuntu のシェルで実行する
sudo apt install language-pack-ja sudo update-locale LANG=ja_JP.UTF-8
-
Ubuntu シェルの再起動する
Ubuntu のシェル起動時、ホームディレクトリをカレントディレクトリとして開始するようにする
-
Windwos Terminal の設定を開く
-
左メニューのプロファイルから Ubuntu-20.04 を選ぶ
-
開始ディレクトリを下記のように設定する
/home/<UserName>
(参考)Ubuntu のホームディレクトリをエクスプローラーで開く方法
-
下記コマンドを Ubuntu のシェルで実行
cd ~ explorer.exe .
Docker のインストール
https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository を参考に実施する。
必要なパッケージのインストール
-
下記コマンドを Ubuntu のシェル(以下同じ)で実行する
sudo apt-get update sudo apt-get install \ ca-certificates \ curl \ gnupg \ lsb-release
Docker の GPG Key を追加
-
下記コマンドを実行する
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
Docker のパッケージリポジトリを登録
-
下記コマンドを実行して stable リポジトリを登録する(ほかのリポジトリを登録する場合は、公式のガイドを参照)
echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Docker Engine のインストール
- 下記コマンドを実行する
sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io
Docker の設定
Docker の自動起動の設定
-
下記コマンドを実行して、自分が使っている OS ユーザーを docker グループに追加する
sudo usermod -aG docker $USER
-
下記コマンドを実行して、visudo で vim を使うように変更する
sudo update-alternatives --config editor (選択画面が表示されるのでvim.basicを選択)
-
下記コマンドを実行して docker 起動時にパスワードを聞かれないようにする
sudo visudo (最終行に下記を追加) %docker ALL=(ALL) NOPASSWD: /usr/sbin/service docker start
-
下記コマンド実行して、Docker が自動起動するようにする
vi ~/.bashrc (最終行に下記を追加) # Start dockerd if [ $(service docker status | awk '{print $4}') = "not" ]; then sudo service docker start > /dev/null fi
-
新しい Ubuntu のシェルを起動する
-
下記コマンド実行して Docker デーモンが起動していることを確認する
service docker status (下記のようなメッセージが表示される) * Docker is running
Docker の動作確認
-
下記コマンドを実行して、Docker が動作することを確認する
docker run hello-world (下記のようなメッセージが表示される) Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. ...
VSCode を起動して WSL 環境に接続する
VSCode を起動する
-
下記コマンドを Ubuntu のシェルから実行して、VSCode を起動する(Windows 上で VSCode が起動する)
code .
-
(自動で Remote VSCode Extentions が導入されて WSL 環境に接続される)
-
VSCode でターミナル開いて Ubuntu のシェルが起動することを確認する
Python の環境構築
pyenv のインストール
https://github.com/pyenv/pyenv を参考にインストールと設定を行う。
-
Ubuntu シェルで下記コマンド実行して、必要なパッケージを導入する
sudo apt-get update; sudo apt-get install make build-essential libssl-dev zlib1g-dev \ libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \ libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
-
下記コマンドを実行して pyenv をインストールする
git clone https://github.com/pyenv/pyenv.git ~/.pyenv cd ~/.pyenv && src/configure && make -C src
-
下記のコマンドを実行して .profile と.bashrc を設定する
sed -Ei -e '/^([^#]|$)/ {a \ export PYENV_ROOT="$HOME/.pyenv" a \ export PATH="$PYENV_ROOT/bin:$PATH" a \ ' -e ':a' -e '$!{n;ba};}' ~/.profile echo 'eval "$(pyenv init --path)"' >>~/.profile echo 'eval "$(pyenv init -)"' >> ~/.bashrc
-
新しい Ubuntu シェルを起動する(VSCode で実施している場合は、VSCode を再起動させる)
pyenv の動作確認
-
下記のコマンドを実行する
pyenv --version (下記のようにバージョンが表示されることを確認する) pyenv 2.2.3-4-g971397dd
python ランタイムの導入
プロジェクト用ディレクトリの作成
-
下記コマンドのように実行して、任意の場所にプロジェクト用ディレクトリを作成して移動する
mkdir -p work/<ProjectName> cd work/<ProjectName>
Python をインストールする
-
下記コマンドを実行して、インストール可能な Python のバージョンを確認する
pyenv install --list
-
下記コマンドを実行して、任意のバージョンの Python をインストール、プロジェクト用ディレクトリ内で利用できるようにする
pyenv install 3.9.4 pyenv local 3.9.4 pyenv rehash
※ Ubuntu 内で共通で使えるようにする場合は、 pyenv global 3.9.4 の様に実行する
-
下記コマンドを実行し、Python のバージョンが表示されることを確認する
python --version (下記のようにバージョンが表示されることを確認する) Python 3.9.4
参考
Discussion