set -x
#-e http_proxy=http://127.0.0.1:7890 -e https_proxy=http://127.0.0.1:7890 \注意代理下载加速
$SUDO docker run --runtime nvidia -it --rm --network host -e http_proxy=http://127.0.0.1:7890 -e https_proxy=http://127.0.0.1:7890 \
nvidia@nvidia-desktop:~/jetson-containers (master)$ cat /etc/docker/daemon.json
{
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": [],
"proxies":{
"default": {
"httpProxy": "http://127.0.0.1:7890",
"httpsProxy": "http://127.0.0.1:7890"
}
}
}
},
"default-runtime": "nvidia"
}
一旦你通过在Jetson上刷新最新的Jetson Linux(L4T)BSP或用整个JetPack映像刷新SD卡来设置你的Jetson,在开始测试所有伟大的生成式AI应用程序之前,你要确保你有一个巨大的存储空间来容纳所有容器和你要下载的模型。jetson-containers
我们将展示如何在 Jetson 上安装 SSD,并为 Docker 进行设置。
系统启动后,验证您的 Jetson 是否在 PCI 总线上识别出新的内存控制器:
lspci
输出应如下所示:
0007:01:00.0 Non-Volatile memory controller: Marvell Technology Group Ltd. Device 1322 (rev 02)
运行以查找设备名称。lsblk
lsblk
输出应如下所示:
- NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
- loop0 7:0 0 16M 1 loop
- mmcblk1 179:0 0 59.5G 0 disk
- ├─mmcblk1p1 179:1 0 58G 0 part /
- ├─mmcblk1p2 179:2 0 128M 0 part
- ├─mmcblk1p3 179:3 0 768K 0 part
- ├─mmcblk1p4 179:4 0 31.6M 0 part
- ├─mmcblk1p5 179:5 0 128M 0 part
- ├─mmcblk1p6 179:6 0 768K 0 part
- ├─mmcblk1p7 179:7 0 31.6M 0 part
- ├─mmcblk1p8 179:8 0 80M 0 part
- ├─mmcblk1p9 179:9 0 512K 0 part
- ├─mmcblk1p10 179:10 0 64M 0 part
- ├─mmcblk1p11 179:11 0 80M 0 part
- ├─mmcblk1p12 179:12 0 512K 0 part
- ├─mmcblk1p13 179:13 0 64M 0 part
- └─mmcblk1p14 179:14 0 879.5M 0 part
- zram0 251:0 0 1.8G 0 disk [SWAP]
- zram1 251:1 0 1.8G 0 disk [SWAP]
- zram2 251:2 0 1.8G 0 disk [SWAP]
- zram3 251:3 0 1.8G 0 disk [SWAP]
- nvme0n1 259:0 0 238.5G 0 disk
识别与您的 SSD 对应的设备。在本例中,它是 .nvme0n1
格式化 SSD,创建挂载点,并将其挂载到文件系统。
sudo mkfs.ext4 /dev/nvme0n1
您可以为挂载点目录选择任何名称。我们在这里使用,但在 ' setup.md 文档中,被使用。
/ssd
jetson-containers
/mnt
sudo mkdir /ssd
sudo mount /dev/nvme0n1 /ssd
为了确保挂载在启动后仍然存在,请在文件中添加一个条目:fstab
首先,确定 SSD 的 UUID:
lsblk -f
然后,向文件添加一个新条目:fstab
sudo vi /etc/fstab
插入以下行,将 UUID 替换为从中找到的值:lsblk -f
UUID=************-****-****-****-******** /ssd/ ext4 defaults 0 2
最后,更改目录的所有权。/ssd
sudo chown ${USER}:${USER} /ssd
安装完整的 NVIDIA JetPack SDK,其中包括软件包。nvidia-container
注意:如果您使用 NVIDIA 提供的 SD 卡映像来刷新 SD 卡,则所有必需的 JetPack 组件都已预安装,因此可以跳过此步骤。
- sudo apt update
- sudo apt install -y nvidia-jetpack
重新启动 Docker 服务并将用户添加到组中,这样您就不需要将命令与 一起使用。docker
sudo
- sudo systemctl restart docker
- sudo usermod -aG docker $USER
- newgrp docker
添加默认运行时/etc/docker/daemon.json
sudo vi /etc/docker/daemon.json
插入该行,如下所示:"default-runtime": "nvidia"
- {
- "runtimes": {
- "nvidia": {
- "path": "nvidia-container-runtime",
- "runtimeArgs": []
- }
- },
- "default-runtime": "nvidia"
- }
重启 Docker
sudo systemctl daemon-reload && sudo systemctl restart docker
现在,SSD 已安装在您的设备上并可用,您可以使用额外的存储容量来保存对存储要求苛刻的 Docker 目录。
停止 Docker 服务。
sudo systemctl stop docker
移动现有 Docker 文件夹
- sudo du -csh /var/lib/docker/ && \
- sudo mkdir /ssd/docker && \
- sudo rsync -axPS /var/lib/docker/ /ssd/docker/ && \
- sudo du -csh /ssd/docker/
编辑/etc/docker/daemon.json
sudo vi /etc/docker/daemon.json
插入如下行。"data-root"
- {
- "runtimes": {
- "nvidia": {
- "path": "nvidia-container-runtime",
- "runtimeArgs": []
- }
- },
- "default-runtime": "nvidia",
- "data-root": "/ssd/docker"
- }
重命名旧的 Docker 数据目录
sudo mv /var/lib/docker /var/lib/docker.old
重新启动 docker 守护程序
- sudo systemctl daemon-reload && \
- sudo systemctl restart docker && \
- sudo journalctl -u docker
[第1航站楼]首先,打开终端以在拉取 Docker 映像时监视磁盘使用情况。
watch -n1 df
[第2航站楼]接下来,打开一个新终端并启动 Docker pull。
docker pull nvcr.io/nvidia/l4t-base:r35.2.1
[第1航站楼]请注意,随着容器映像的下载和提取,磁盘使用率会上升。/ssd
- ~$ docker image ls
- REPOSITORY TAG IMAGE ID CREATED SIZE
- nvcr.io/nvidia/l4t-base r35.2.1 dc07eb476a1d 7 months ago 713MB
重新启动 Jetson,并验证是否遵守以下规定:
- ~$ sudo blkid | grep nvme
- /dev/nvme0n1: UUID="9fc06de1-7cf3-43e2-928a-53a9c03fc5d8" TYPE="ext4"
-
- ~$ df -h
- Filesystem Size Used Avail Use% Mounted on
- /dev/mmcblk1p1 116G 18G 94G 16% /
- none 3.5G 0 3.5G 0% /dev
- tmpfs 3.6G 108K 3.6G 1% /dev/shm
- tmpfs 734M 35M 699M 5% /run
- tmpfs 5.0M 4.0K 5.0M 1% /run/lock
- tmpfs 3.6G 0 3.6G 0% /sys/fs/cgroup
- tmpfs 734M 88K 734M 1% /run/user/1000
- /dev/nvme0n1 458G 824M 434G 1% /ssd
-
- ~$ docker info | grep Root
- Docker Root Dir: /ssd/docker
-
- ~$ sudo ls -l /ssd/docker/
- total 44
- drwx--x--x 4 root root 4096 Mar 22 11:44 buildkit
- drwx--x--- 2 root root 4096 Mar 22 11:44 containers
- drwx------ 3 root root 4096 Mar 22 11:44 image
- drwxr-x--- 3 root root 4096 Mar 22 11:44 network
- drwx--x--- 13 root root 4096 Mar 22 16:20 overlay2
- drwx------ 4 root root 4096 Mar 22 11:44 plugins
- drwx------ 2 root root 4096 Mar 22 16:19 runtimes
- drwx------ 2 root root 4096 Mar 22 11:44 swarm
- drwx------ 2 root root 4096 Mar 22 16:20 tmp
- drwx------ 2 root root 4096 Mar 22 11:44 trust
- drwx-----x 2 root root 4096 Mar 22 16:19 volumes
-
- ~$ sudo du -chs /ssd/docker/
- 752M /ssd/docker/
- 752M total
-
- ~$ docker info | grep -e "Runtime" -e "Root"
- Runtimes: io.containerd.runtime.v1.linux nvidia runc io.containerd.runc.v2
- Default Runtime: nvidia
- Docker Root Dir: /ssd/docker
您的 Jetson 现在已使用 SSD 进行设置!