使用WSL2(Ubuntu)+ Docker来构建环境,并运行kaggle官方容器
简要概括
因为在kaggle竞赛的入门笔记本中使用的keras-cv无法在Windows 10上运行,所以我决定搭建WSL2的Ubuntu环境以满足需求。另外,我也安装了Docker Engine,并且配置了kaggle官方镜像的使用。现在我将留下当时的操作记录。
個人電腦設置
在这台电脑上,搭建WSL2(Ubuntu)+Docker环境。
准备
安装Windows终端
按照官方网站的指示,安装Windows终端。
虽然不是必要的工具,但可以通过选项卡操作启动Powershell和WSL的Ubuntu,非常方便。
从安装WSL开始,之后将使用这个Windows终端。
创建环境
安装WSL2
根据官方网站的指南安装WSL2。
在PowerShell上运行以下命令,将自动安装所需的一组组件。
wsl --install
Ubuntu资源配置更改
据说,Ubuntu默认会分配给内存的大小是主机(Windows)的一半。根据需要,可以创建配置文件并更改资源设置。我参考了这篇文章。
(Windows端)创建.wslconfig文件的位置
C:\Users\[ユーザ名]\.wslconfig
设置示例:分配80GB内存
[wsl2]
memory=80GB
为了反映设置文件的内容,使用PowerShell在wsl上关闭它。
wsl --shutdown
确认内存已增加到80GB。
另外,除了内存之外,还可以更改其他资源的设置。这里可以作为参考。
安装Docker Engine
按照官方文档的指示安装Docker Engine。
我根据官方文档中“使用Apt仓库安装”的内容进行了完全相同的操作。
设置Docker的Apt仓库
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Add the repository to Apt sources:
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
安装Docker软件包
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
安装完成后,启动hello-world容器并进行操作确认。
sudo docker run hello-world
此外,我們可以將使用者添加到 Docker 群組,以便無需使用 sudo 命令就能執行 Docker 命令。
# sudo usermod -aG docker $USER
sudo usermod -aG docker <ユーザ名>
安装NVIDIA容器工具包
为了在容器中使用Nvidia GPU,需要安装NVIDIA容器工具包。
按照官方指南,直接按照Apt的安装方法进行操作。
仓库设置
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list \
&& \
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
安装NVIDIA容器工具包的软件包。
sudo apt-get install -y nvidia-container-toolkit
获取Docker镜像
在 GitHub 上参考,并获取 Kaggle 的官方镜像。
# gpuのイメージ取得コマンド
docker pull gcr.io/kaggle-gpu-images/python
# cpu onlyのイメージ取得コマンド
docker pull kaggle/python
确认图像已被注册到存储库中。
docker images
确认动作
创建容器并进行操作确认。
# コマンド例
docker run -it --gpus all -h "kgl_gpu1" --rm -p 80:8888 -v /mnt/c/work:/mnt/work --name kgl_gpu1 gcr.io/kaggle-gpu-images/python /bin/bash
# -i:対話形式で操作できるようにする
# -t:疑似tty端末を割り当てる
# --gpus:コンテナ内で利用するgpuデバイスを指定
# -h:コンテナのホスト名の指定
# --rm:終了時にコンテナを削除
# -p:ポートフォワードの設定(不要かも)。 <ホスト側ポート>:<コンテナ側ポート>
# -v:ディスクのマウント設定 <ホスト側ディレクトリ>:<コンテナ内マウントポイント>。複数指定も可能
# --name:起動するコンテナーに名前を付ける(省略すると、適当な名前がつくっぽい)
结束了。
请参考
Windows 终端
-
- Windows ターミナルをインストールしてセットアップを開始する
- https://learn.microsoft.com/ja-jp/windows/terminal/install
WSL2-雲端原生不兼容層次
-
- WSL を使用して Windows に Linux をインストールする方法
- https://learn.microsoft.com/ja-jp/windows/wsl/install
WSL中的Ubuntu资源配置
-
- WSL2/Ubuntu/Raspberry Piでのメモリ不足を解消する
-
- https://zenn.dev/karaage0703/articles/d38e17bd6efbaa
WSL2の2つの設定ファイル「.wslconfig」と「wsl.conf」
https://ascii.jp/elem/000/004/044/4044122/2/
Docker: Docker
-
- Install Docker Engine on Ubuntu
-
- https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository
よく使うDockerコマンド
https://qiita.com/noralife/items/18301143c20cc5172c56
【Docker】Dockerでホストのディレクトリをマウントする
https://qiita.com/Yarimizu14/items/52f4859027165a805630
NVIDIA 容器工具包 (NVIDIA
Installing the NVIDIA Container Toolkit
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html
NVIDIA Container Toolkit (NVIDIA Docker) は何をしてくれるか
https://qiita.com/tkusumi/items/f275f0737fb5b261a868
除了这个参考网站之外,我还有几个,但是我忘记了。一旦我回想起来,我会补充说明的。