一、docker全局代理映射
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"
}
二、提示 - SSD + Docker
一旦你通过在Jetson上刷新最新的Jetson Linux(L4T)BSP或用整个JetPack映像刷新SD卡来设置你的Jetson,在开始测试所有伟大的生成式AI应用程序之前,你要确保你有一个巨大的存储空间来容纳所有容器和你要下载的模型。jetson-containers
我们将展示如何在 Jetson 上安装 SSD,并为 Docker 进行设置。
固态硬盘
物理安装
- 从 Jetson 开发者套件中拔下电源和任何外围设备。
- 将 NVMe SSD 卡物理安装在 Jetson 开发者套件的载板上,确保正确安装连接器并用螺丝固定。
- 重新连接所有外围设备,然后重新连接电源以打开 Jetson 开发者套件。
-
系统启动后,验证您的 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
将 Docker 目录迁移到 SSD
现在,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
在 SSD 上测试 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 RootDocker 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.v2Default Runtime: nvidiaDocker Root Dir: /ssd/docker
您的 Jetson 现在已使用 SSD 进行设置!