はじめに
WSL2+Docker+Proxy環境を構築する際、いくつかの情報をまたぎながら設定する必要がありました。
最短手順(2024年5月時点)をまとめましたのでご査収くださいw
Ubuntuは24.04LTSを新規インストールする前提です。
DockerはUbuntuにインストールします。
環境
- Windows10
- WSL2
- Ubuntu 24.04
- Docker 26.1.3
WSL2のインストール
コマンドプロンプトから次のコマンドを入力する。
wsl -update
エラーが出て進まない場合は以下を試してみる。
wsl -update -web-download
WSL2にUbuntu 24.04をインストール
次のコマンドでUbuntu-24.04
をインストールする。
wsl --install Ubuntu-24.04
なお、インストール可能なディストリビューションは次のコマンドで確認できる。
wsl --list --online
インストールの最後でユーザー名/パスワードの入力を求められるので、任意に入力する。
ここではユーザ名をuser
としています。
以降、Ubuntuのユーザ名はuser
として記述します
「ターミナル プレビュー」をインストールする
<本手順は任意>
Ubuntuが起動したら、コマンドプロンプトを閉じる。
スタートメニューからMicrosoft Storeを開きで「terminal」と検索する。
「Windows Terminal Preview」をインストールする。
インストール後、スタートメニューから「ターミナル プレビュー」(以降ターミナル)を起動する。
下図のようにUbuntuを簡単に起動できるようになる。
Ubuntuにプロキシを設定する
ターミナルからUbuntuを起動する。
任意のエディタ(ここではvi)でホームディレクトリ(/home/user)の.bashrc
を編集する。
vi .bashrc
次のようにプロキシ設定を追加する。
パスワードで記号を使用している場合はURLエンコードする必要があります
#※パスワード内の@や/など記号はURLエンコードする必要がある。
#下の例では、本来のパスワード「yourp@ssword」の「@」部分をURLエンコードして「yourp%40ssword」にしている
export HTTP_PROXY_USER=your_username
export HTTP_PROXY_PASS=yourp%40ssword
export HTTP_PROXY=http://${HTTP_PROXY_USER}:${HTTP_PROXY_PASS}@proxysrv:port/
export HTTPS_PROXY=${HTTP_PROXY}
git config --global http.proxy ${HTTP_PROXY}
git config --global https.proxy ${HTTPS_PROXY}
git config --global url."https://".insteadOf git://
apt-getにProxy設定を加える
/etc/apt/apt.conf.d以下にproxy.conf
を作成する。
sudo vi /etc/apt/apt.conf.d/proxy.conf
以下の設定を書き込む。ここでもパスワードはURLエンコードが必要。
Acquire::http::Proxy "http://your_username:yourp%40ssword@proxysrv:port/";
Acquire::https::Proxy "http://your_username:yourp%40ssword@proxysrv:port/";
Ubuntuの再起動
WSL2では以下の手順でUbuntuを再起動します。
1. ターミナルの「Windows Powershell」タブに移動し、次のコマンドでUbuntuを停止させる
Ubuntu側でsudo shutdown -rなどとしないように注意してください
wsl --shutdown
2. ターミナルでUbuntu側のタブを選択し、Enter
キーを押下する
Dockerのインストール
リポジトリをセットアップ (参考)
1. パッケージリストを更新
sudo apt-get update
2. 必要なパッケージをインストール
sudo apt-get install
3.\ 公式のGPGキーを保存するディレクトリを作成する
sudo mkdir -p /etc/apt/keyrings
4. 公式のGPGキーを取得する
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
5. 公式のDockerリポジトリを追加する
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
6. 改めてパッケージリストを更新する
sudo apt-get update
Dockerをインストール
1. Docker Engine、containerd、Docker Compose をインストール
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
2. インストールされたdockerのバージョンを確認
バージョン確認することで正常にdockerがインストールされたことを確認する
docker -v
3. dockerコマンドをsudoなしで実行できるようにする
docker
グループにUbuntuインストール時に作成したユーザーを追加する。
(今回のケースでは $USER
部分は user
)
sudo usermod -aG docker $USER
4. 以下のコマンドで変更を反映させる
(上記と同じく、今回のケースでは $USER
部分は user
)
su - $USER
DockerのProxy設定
本家ドキュメント に従って以下のように設定する。
1. Docker サービスに対応した systemd のドロップイン・ディレクトリを生成する
sudo mkdir -p /etc/systemd/system/docker.service.d
2. /etc/systemd/system/docker.service.d/http-proxy.conf
というファイルを生成して、次の手順で環境変数 HTTP_PROXY の設定を書き込む
sudo vi /etc/systemd/system/docker.service.d/http-proxy.conf
【重要】
Dockerのパスワード設定だけは、URLエンコードに加えて「%」をダブルにする必要があります!!
[Service]
Environment="HTTP_PROXY=http://your_username:yourp%%40ssword@proxysrv:port/"
Environment="HTTPS_PROXY=http://your_username:yourp%%40ssword@proxysrv:port/"
Environment="NO_PROXY=localhost,127.0.0.1"
3. 変更を反映するため、Docker を再起動する
sudo systemctl daemon-reload
sudo systemctl restart docker
4. 設定が読み込まれ、変更が反映したかどうかを確認する
sudo systemctl show --property=Environment docker
(Ctrl+C
で抜ける)
hello-worldで最終確認
docker run hello-world
「Hello from Docker!」を表示されていればOKです。
謝辞
Qiitaユーザの皆様のおかげで助かりました。ありがとうございました。