volume Runtime NVIDIA Container Toolkit /etc/docker/daemon.json
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 紧密协作,为容器提供运行环境