Home Operation and Maintenance Docker what is nvidia docker2

what is nvidia docker2

Dec 08, 2021 pm 05:27 PM

nvidia-docker2.0 is a simple package, which mainly allows docker to use NVIDIA Container runtime by modifying docker's configuration file "/etc/docker/daemon.json".

what is nvidia docker2

The operating environment of this article: Windows 10 system, Docker version 20.10.11, Dell G3 computer.

Introduction to NVidia Docker

NVIDIA began designing NVIDIA-Docker in 2016 to facilitate containers using NVIDIA GPUs. The first generation nvidia-docker1.0 implements the encapsulation of the docker client and mounts the necessary GPU devices and libraries into the container when the container is started. However, this design method is highly coupled with the docker runtime and lacks flexibility. The existing defects are as follows:

The design is highly coupled with docker and does not support other container runtimes. Such as: LXC, CRI-O and container runtimes that may be added in the future.

Cannot make better use of other tools in the docker ecosystem. Such as: docker compose.

GPU cannot be used as a resource of the scheduling system for flexible scheduling.

Improve GPU support during container runtime. For example: automatically obtain user-level NVIDIA Driver libraries, NVIDIA kernel modules, device ordering, etc.

Based on the shortcomings described above, NVIDIA began the design of the next generation container runtime: nvidia-docker2.0.

The implementation mechanism of nvidia-docker 2.0

First briefly introduce the direct relationship between nvidia-docker 2.0, containerd, nvidia-container-runtime, libnvidia-container and runc .

The relationship between them can be related through the following picture:

what is nvidia docker2

nvidia-docker 2.0

nvidia-docker2.0 is a simple package that mainly allows docker to use the NVIDIA Container runtime by modifying the docker configuration file /etc/docker/daemon.json.

nvidia-container-runtime

nvidia-container-runtime is the real core part. It adds a prestart based on the original docker container runtime runc. Hook, used to call the libnvidia-container library.

libnvidia-container

libnvidia-container provides a library and a simple CLI tool that can be used to make NVIDIA GPUs used by Linux containers.

Containerd

Containerd is mainly responsible for:

  • Manage the life cycle of the container (from container creation to destruction )

  • Pull/Push container images

  • Storage management (manage the storage of images and container data)

  • Call runc to run the container

  • Manage the network interface and network of the container

what is nvidia docker2

When containerd After receiving the request, make relevant preparations. You can choose to call runc yourself or create containerd-shim and then call runc. Runc creates the container based on the OCI file. The above is the basic process of ordinary container creation.

RunC

RunC is a lightweight tool. It is used to run containers. It is only used to do one thing and one thing. Do it well. We can think of it as a command line gadget that can run containers directly without going through the docker engine. In fact, runC is a product of standardization and it creates and runs containers according to OCI standards. The OCI (Open Container Initiative) organization aims to develop an open industrial standard around container formats and runtimes.

You can create a container directly using the RunC command line and provide simple interaction capabilities.

The functions of each component and the relationship between them have been introduced above. Next, let’s describe this picture in detail:

what is nvidia docker2

Create a container normally The process is as follows:

1

docker --> dockerd --> containerd--> containerd-shim -->runc --> container-process

Copy after login

The docker client sends the request to create a container to dockerd. When dockerd receives the request task, it sends the request to containerd. After checking and verifying, containerd starts containerd-shim or does it by itself. Start the container process.

Create a container that uses GPU

The process of creating a GPU container is as follows:

1

docker--> dockerd --> containerd --> containerd-shim--> nvidia-container-runtime --> nvidia-container-runtime-hook --> libnvidia-container --> runc -- > container-process

Copy after login

The basic process is similar to that of a container that does not use GPU, except that The default runtime of docker is replaced by NVIDIA's own nvidia-container-runtime.

In this way, when nvidia-container-runtime creates a container, it first executes the nvidia-container-runtime-hook hook to check whether the container needs to use the GPU (judged by the environment variable NVIDIA_VISIBLE_DEVICES). If necessary, call libnvidia-container to expose the GPU to the container. Otherwise, the default runc logic is used.

Speaking of which, the general mechanism of nvidia-docker2.0 is basically clear. However, the projects involved in nvidia-container-runtime, libnvidia-container, containerd, and runc will not be introduced one by one in this article. If you are interested, you can explore and learn on your own. The addresses of these projects have been linked in the article.

Recommended learning: "Docker Video Tutorial"

The above is the detailed content of what is nvidia docker2. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Docker Interview Questions: Ace Your DevOps Engineering Interview Docker Interview Questions: Ace Your DevOps Engineering Interview Apr 06, 2025 am 12:01 AM

Docker is a must-have skill for DevOps engineers. 1.Docker is an open source containerized platform that achieves isolation and portability by packaging applications and their dependencies into containers. 2. Docker works with namespaces, control groups and federated file systems. 3. Basic usage includes creating, running and managing containers. 4. Advanced usage includes using DockerCompose to manage multi-container applications. 5. Common errors include container failure, port mapping problems, and data persistence problems. Debugging skills include viewing logs, entering containers, and viewing detailed information. 6. Performance optimization and best practices include image optimization, resource constraints, network optimization and best practices for using Dockerfile.

Docker Volumes: Managing Persistent Data in Containers Docker Volumes: Managing Persistent Data in Containers Apr 04, 2025 am 12:19 AM

DockerVolumes ensures that data remains safe when containers are restarted, deleted, or migrated. 1. Create Volume: dockervolumecreatemydata. 2. Run the container and mount Volume: dockerrun-it-vmydata:/app/dataubuntubash. 3. Advanced usage includes data sharing and backup.

How to update the image of docker How to update the image of docker Apr 15, 2025 pm 12:03 PM

The steps to update a Docker image are as follows: Pull the latest image tag New image Delete the old image for a specific tag (optional) Restart the container (if needed)

How to exit the container by docker How to exit the container by docker Apr 15, 2025 pm 12:15 PM

Four ways to exit Docker container: Use Ctrl D in the container terminal Enter exit command in the container terminal Use docker stop <container_name> Command Use docker kill <container_name> command in the host terminal (force exit)

How to copy files in docker to outside How to copy files in docker to outside Apr 15, 2025 pm 12:12 PM

Methods for copying files to external hosts in Docker: Use the docker cp command: Execute docker cp [Options] <Container Path> <Host Path>. Using data volumes: Create a directory on the host, and use the -v parameter to mount the directory into the container when creating the container to achieve bidirectional file synchronization.

Docker Security Hardening: Protecting Your Containers From Vulnerabilities Docker Security Hardening: Protecting Your Containers From Vulnerabilities Apr 05, 2025 am 12:08 AM

Docker security enhancement methods include: 1. Use the --cap-drop parameter to limit Linux capabilities, 2. Create read-only containers, 3. Set SELinux tags. These strategies protect containers by reducing vulnerability exposure and limiting attacker capabilities.

How to restart docker How to restart docker Apr 15, 2025 pm 12:06 PM

How to restart the Docker container: get the container ID (docker ps); stop the container (docker stop <container_id>); start the container (docker start <container_id>); verify that the restart is successful (docker ps). Other methods: Docker Compose (docker-compose restart) or Docker API (see Docker documentation).

How to use docker desktop How to use docker desktop Apr 15, 2025 am 11:45 AM

How to use Docker Desktop? Docker Desktop is a tool for running Docker containers on local machines. The steps to use include: 1. Install Docker Desktop; 2. Start Docker Desktop; 3. Create Docker image (using Dockerfile); 4. Build Docker image (using docker build); 5. Run Docker container (using docker run).

See all articles