Docker_存储卷-挂载_运行时-nvidia-container-runtime

Docker 存储卷

volume
   Docker-managed volume(docker管理卷)
   Bind mount volume(绑定挂载卷)

挂载

Docker提供了3种方法将数据从Docker宿主机挂载(mount)到容器:
    volumes,Volumes由Docker管理,存储在宿主机的某个地方(在linux上是/var/lib/docker/volumes/
	     受控存储
    bind mounts-手动处理所有权限问题
	    使用bind mounts时,宿主机上的一个文件或目录被挂载到容器上
    tmpfs mounts。
	   tmpfs mounts的数据不会落盘。

Docker 命令

参数--volume(或简写为-v)只能创建bind mount
  宿主机的/test目录挂载到容器的/soft目录,
     docker run -it -v /test:/soft centos /bin/bash

参数--mount默认情况下用来挂载volume,但也可以用来创建bind mount和tmpfs。如果不指定type选项,则默认为挂载volume,
    --mount type=tmpfs,destination=/usr/share/nginx/html,tmpfs-mode=1770 \

docker 命令查看卷的信息

    docker inspect        一下看看是否成功挂载上
	docker container logs 查看一下容器的日志看看
	 docker volume ls
	 docker volume inspect for_nginx
	 
	 
	grep -A -B -C 属于上下文控制(Context control) 
	  grep -A 显示匹配指定内容及之后的n行
      grep -B  显示匹配指定内容及之前的n行
      grep -C  显示匹配指定内容及其前后各n行

情况

硬盘Mount到宿主机后,重启容器会自动挂载,否则不会查到宿主机的内容

命令

nvidia-smi 的
   结果除了有 GPU 驱动版本型号,
   显卡的驱动版本,以及该驱动支持的CUDA版本
   还有 CUDA Driver API 的型号,即上面的 12.0。
driver version 570.100.01
 cuda version 12.1
nvcc-V 的结果是对应 
   CUDA Runtime API
   nvcc V10.5.119

docker使用nvidia的历史

版本一
    nvidia-docker
  
版本二   
     sudo apt-get install -y nvidia-docker2
      nvidia-docker2 是 nvidia-docker 的升级版本,作为 Docker runtime 的一部分,
       允许通过 --runtime=nvidia 参数在 Docker 容器中使用 GPU   

版本三 
    sudo apt-get install -y nvidia-container-toolkit
      
 NVIDIA Container Toolkit 是最新的解决方案,
    取代了 nvidia-docker 和 nvidia-docker2。它提供了更简洁的安装过程和更强大的功能
	
 使用 nvidia-ctk 命令配置容器运行时:nvidia-ctk命令修改/etc/docker/daemon.json,重启docker可以使用NVIDIA容器运行时
    sudo nvidia-ctk runtime configure --runtime=docker
    cat /etc/docker/daemon.json 
	## nvidia-container-runtime是一个用于在 Docker 容器中实现 NVIDIA GPU 支持的运行时工具
	{
      "runtimes": {
        "nvidia": {
          "path": "/usr/bin/nvidia-container-runtime",
          "runtimeArgs": []
           }
        }
    }
	   
    sudo systemctl restart docker
	nvidia-container-runtime 是一个关键工具,用于在 Docker 容器中实现和管理 NVIDIA GPU 支持

检查当前 Docker 使用的 默认运行时(default runtime)方法

 cat /etc/docker/daemon.json
 docker info | grep -i 'Runtimes\|Default Runtime'
 Runtimes: io.containerd.runc.v2 runc nvidia
 Default Runtime: nvidia
 
    常见的 Docker Runtime
    Runtime 名称	说明
    runc	默认 Docker 运行时(标准 Linux 容器)
    nvidia	用于启用 GPU 支持的 NVIDIA 运行时
    runsc	gVisor 安全运行时	 
 Docker默认使用runc作为其容器运行时。runc是一个轻量级的容器运行时,符合OCI(Open Container Initiative)标准
 
"gvisor": {
  "path": "/usr/local/bin/runsc"
   }
gVisor是一个用户空间内核,提供了额外的安全层,适用于运行不受信任的代码
  docker run --runtime=gvisor
Kata Containers是一个轻量级虚拟机运行时,适用于需要更高性能隔离的场景
rkt 是 CoreOS 开发的容器 runtime,符合 oci 规范,因而能够运行 Docker 的容
lxc 是 Linux 上老牌的容器 runtime。Docker 最初也是用 lxc 作为 runtime

 OCI 发布了两个规范:runtime spec 和 image format spec	
   runtime 是容器真正运行的地方。runtime 需要跟操作系统 kernel 紧密协作,为容器提供运行环境
posted @ 2023-04-23 10:34  辰令  阅读(73)  评论(0)    收藏  举报