Jetson 设备docker全局代理映射方法以及迁移到ssd硬盘

一、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 进行设置。

固态硬盘

物理安装

  1. 从 Jetson 开发者套件中拔下电源和任何外围设备。
  2. 将 NVMe SSD 卡物理安装在 Jetson 开发者套件的载板上,确保正确安装连接器并用螺丝固定。
  3. 重新连接所有外围设备,然后重新连接电源以打开 Jetson 开发者套件。
  4. 系统启动后,验证您的 Jetson 是否在 PCI 总线上识别出新的内存控制器:

    lspci
    

    输出应如下所示:

    0007:01:00.0 Non-Volatile memory controller: Marvell Technology Group Ltd. Device 1322 (rev 02)
    

格式化和设置自动挂载

  1. 运行以查找设备名称。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

  2. 格式化 SSD,创建挂载点,并将其挂载到文件系统。

    sudo mkfs.ext4 /dev/nvme0n1
    

    您可以为挂载点目录选择任何名称。我们在这里使用,但在 ' setup.md 文档中,被使用。/ssdjetson-containers/mnt

    sudo mkdir /ssd
    
    sudo mount /dev/nvme0n1 /ssd
    
  3. 为了确保挂载在启动后仍然存在,请在文件中添加一个条目:fstab

    首先,确定 SSD 的 UUID:

    lsblk -f
    

    然后,向文件添加一个新条目:fstab

    sudo vi /etc/fstab
    

    插入以下行,将 UUID 替换为从中找到的值:lsblk -f

    UUID=************-****-****-****-******** /ssd/ ext4 defaults 0 2
    
  4. 最后,更改目录的所有权。/ssd

    sudo chown ${USER}:${USER} /ssd
    

码头工人

  1. 安装完整的 NVIDIA JetPack SDK,其中包括软件包。nvidia-container

    注意:如果您使用 NVIDIA 提供的 SD 卡映像来刷新 SD 卡,则所有必需的 JetPack 组件都已预安装,因此可以跳过此步骤。

    sudo apt update
    sudo apt install -y nvidia-jetpack
    
  2. 重新启动 Docker 服务并将用户添加到组中,这样您就不需要将命令与 一起使用。dockersudo

    sudo systemctl restart docker
    sudo usermod -aG docker $USER
    newgrp docker
    
  3. 添加默认运行时/etc/docker/daemon.json

    sudo vi /etc/docker/daemon.json
    

    插入该行,如下所示:"default-runtime": "nvidia"

    {
        "runtimes": {
            "nvidia": {
                "path": "nvidia-container-runtime",
                "runtimeArgs": []
            }
        },
        "default-runtime": "nvidia"
    }
    
  4. 重启 Docker

    sudo systemctl daemon-reload && sudo systemctl restart docker
    

将 Docker 目录迁移到 SSD

现在,SSD 已安装在您的设备上并可用,您可以使用额外的存储容量来保存对存储要求苛刻的 Docker 目录。

  1. 停止 Docker 服务。

    sudo systemctl stop docker
    
  2. 移动现有 Docker 文件夹

    sudo du -csh /var/lib/docker/ && \
        sudo mkdir /ssd/docker && \
        sudo rsync -axPS /var/lib/docker/ /ssd/docker/ && \
        sudo du -csh  /ssd/docker/ 
    
  3. 编辑/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"
    }
    
  4. 重命名旧的 Docker 数据目录

    sudo mv /var/lib/docker /var/lib/docker.old
    
  5. 重新启动 docker 守护程序

    sudo systemctl daemon-reload && \
        sudo systemctl restart docker && \
        sudo journalctl -u docker
    

在 SSD 上测试 Docker

  1. [第1航站楼]首先,打开终端以在拉取 Docker 映像时监视磁盘使用情况。

    watch -n1 df 
    
  2. [第2航站楼]接下来,打开一个新终端并启动 Docker pull。

    docker pull nvcr.io/nvidia/l4t-base:r35.2.1
    
  3. [第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 进行设置!

你可能感兴趣的:(docker,容器,运维)