はじめに
最近ではDockerの利用はもう当たり前になってきましたね。ですが、Docker Desktop for Windowsはライセンスが有償化してしまったこともあり、ライセンスを購入したりクラウドに環境立てたりするほどではないけど、ちょっとした調査検証や開発はローカルPCでささっとやってみたいというケースはよくあると思います。私の会社の貸与PCは基本Windowsなので、WSL2でUbuntuの環境を用意してそこでDockerを動かすことにしました。
システム環境
- PC: Windows 10 or 11
- WSL2: Ubuntu 20.04
構築手順
1 WSL2の環境準備
Ubuntu20.04のインストール
Windows Powershellを管理者モードで開き、以下のコマンドを実行します。
wsl --install -d Ubuntu-20.04
Ubuntu 20.04 LST
というウインドウが起動するので、ユーザ名とパスワードを入力します。(ちなみにこの記事の中ではユーザ名をubuntu
としています。)
WSL2のネットワーク関連設定
ネットワーク関連の設定が一番厄介でした。WSL2を再起動したら設定が変わっていてインターネットへアクセスできなくなったりとか。いろいろ試しましたが、私は下記の方法で設定しました。
/etc/resolv.confファイルを削除して、空ファイルを再作成します。
sudo rm /etc/resolv.conf
sudo touch /etc/resolv.conf
一旦Powershell画面でWSLをシャットダウンする。
wsl --shutdown
WindowsのスタートメニューからUbuntu 20.04 LSTを起動し、以下のコマンドを実行します。
sudo rm /etc/resolv.conf
sudo tee /etc/resolv.conf <<EOF
nameserver 8.8.8.8
EOF
/etc/wsl.confファイルを新規作成します。
Windows10ユーザーの場合
sudo tee /etc/wsl.conf <<EOF
[network]
generateResolvConf = false
EOF
Windows11ユーザーの場合
Windows11を利用している場合、wslを再起動すると/etc/resolv.confが自動的に消されてしまう現象がみられます。その回避策ため、次のコマンドを実行します。
sudo tee /etc/wsl.conf <<EOF
[network]
generateResolvConf = false
[boot]
command="echo 'nameserver 8.8.8.8' > /etc/resolv.conf"
EOF
インターネット接続できるかどうかを確認します。
host google.com
2 Ubuntuの初期設定
以降は、Ubuntuへの各種設定、インストールになります。
- Docker、Docker Composeをインストールします。その他Pythonや、私が仕事でよく利用するAWS CLIなども一緒にインストールしています。
- WSL起動時にDocker daemonが起動するように設定しています。
# パッケージの更新
sudo apt update
sudo apt -y upgrade
# タイムゾーンの設定
sudo ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
# Dockerインストール
sudo apt -y install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release \
zip
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
"deb [arch=amd64 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
sudo apt update
sudo apt -y install docker-ce docker-ce-cli containerd.io
# DockerComposeのインストール
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo usermod -aG docker ubuntu
sudo service docker start
sudo service docker status
# AWS CLIインストール
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
rm awscliv2.zip
rm -r ./aws
# sudoパスワード省略設定
sudo visudo
### visudoの画面が表示されるので、最終行までスクロールした後、次の1行を追記する。
ubuntu ALL=NOPASSWD: ALL
### 追記後、`ctrl+o`、`Enter`、`ctrl+x`で保存・終了する。
# ~/.bashrcを読み込むための設定
tee -a ~/.profile <<EOF
if [[ -f ~/.bashrc ]] ; then
. ~/.bashrc
fi
EOF
# Dockerの自動起動設定
tee -a ~/.bashrc <<EOF
if test \$(sudo service docker status | awk '{print \$4}') = 'not'; then
sudo service docker start
fi
EOF
# pythonインストール
sudo apt update
sudo apt install -y --no-install-recommends \
python3-dev \
python3-venv \
python3-pip
sudo apt clean && sudo rm -rf /var/lib/apt/lists/*
sudo ln -s /usr/bin/python3 /usr/bin/python
python -V
3 開発環境の整理
その他、アプリの初期設定をします。
- gitの設定(
git config --global
コマンド) - AWS CLIの設定(
aws configure
コマンド) - Python仮想環境の作成(
python -m venv
コマンド) - VSCode環境の準備
ローカルPCのVSCodeで、拡張機能のRemote - WSL
をインストールします。
その後、Ubuntu 20.04 LST
画面で以下のコマンドを実行すると、新たなVSCodeが起動します。新たに起動したVSCodeにはローカルPCのVSCodeに入っている拡張機能はインストールされていない状態なので、必要なものを手動でインストールします。code .
おわりに
今のところこの環境でも問題なく作業できています。