운영 및 유지보수 Docker 엔비디아 docker2가 뭐죠?

엔비디아 docker2가 뭐죠?

Dec 08, 2021 pm 05:27 PM

nvidia-docker2.0은 docker의 구성 파일 "/etc/docker/daemon.json"을 수정하여 주로 docker가 NVIDIA Container 런타임을 사용할 수 있도록 하는 간단한 패키지입니다.

엔비디아 docker2가 뭐죠?

이 문서의 운영 환경: Windows 10 시스템, Docker 버전 20.10.11, Dell G3 컴퓨터.

NVidia Docker 소개

NVIDIA는 NVIDIA GPU를 사용하여 컨테이너를 활성화하기 위해 2016년에 NVIDIA-Docker를 설계하기 시작했습니다. nvidia-docker1.0의 1세대는 docker 클라이언트의 캡슐화를 구현하고 컨테이너가 시작될 때 필요한 GPU 장치 및 라이브러리를 컨테이너에 마운트했습니다. 그러나 이 설계 방법은 Docker 런타임과 밀접하게 결합되어 있으며 유연성이 부족합니다. 기존 결함은 다음과 같습니다.

디자인은 docker와 밀접하게 결합되어 있으며 다른 컨테이너 런타임을 지원하지 않습니다. 예: 향후 추가될 수 있는 LXC, CRI-O 및 컨테이너 런타임.

Docker 생태계에서는 다른 도구를 더 잘 활용할 수 없습니다. 예: docker compose.

GPU는 유연한 스케줄링을 위해 스케줄링 시스템의 리소스로 사용될 수 없습니다.

컨테이너 런타임 중 GPU 지원을 개선합니다. 예: 사용자 수준 NVIDIA 드라이버 라이브러리, NVIDIA 커널 모듈, 장치 주문 등을 자동으로 가져옵니다.

위에 설명된 단점을 기반으로 NVIDIA는 차세대 컨테이너 런타임인 nvidia-docker2.0의 설계를 시작했습니다.

nvidia-docker 2.0의 구현 메커니즘

먼저 nvidia-docker 2.0, Containerd, nvidia-container-runtime, libnvidia-container 및 runc 간의 직접적인 관계를 간략하게 소개합니다.

그들 사이의 관계는 다음 그림을 통해 연관될 수 있습니다:

엔비디아 docker2가 뭐죠?

nvidia-docker 2.0

nvidia-docker2.0은 주로 docker 구성 파일 /etc /docker/daemon을 수정하는 간단한 패키지입니다. .json을 사용하면 Docker가 NVIDIA 컨테이너 런타임을 사용할 수 있습니다.

nvidia-container-runtime

nvidia-container-runtime은 libnvidia-container 라이브러리를 호출하기 위해 원본 Docker 컨테이너 런타임 runc를 기반으로 사전 시작 후크를 추가하는 실제 핵심 부분입니다.

libnvidia-container

libnvidia-container는 Linux 컨테이너에서 NVIDIA GPU를 사용하는 데 사용할 수 있는 라이브러리와 간단한 CLI 도구를 제공합니다.

Containerd

Containerd는 주로 다음을 담당합니다.

  • 컨테이너의 수명 주기 관리(컨테이너 생성부터 폐기까지)

  • 컨테이너 이미지 가져오기/푸시

  • 스토리지 관리(이미지 관리) 및 컨테이너 데이터 저장)

  • runc를 호출하여 컨테이너 실행

  • 네트워크 인터페이스 및 컨테이너의 네트워크 관리

엔비디아 docker2가 뭐죠?

containerd가 요청을 받은 후 관련 준비를 하고 호출을 선택할 수 있습니다. runc는 스스로 컨테이너d-shim을 생성한 다음 runc를 호출할 수도 있으며, runc는 OCI 파일을 기반으로 컨테이너를 생성합니다. 위는 일반적인 컨테이너 생성의 기본 과정이다.

RunC

RunC는 컨테이너를 실행하는 데 사용되는 경량 도구입니다. 한 가지 작업을 수행하는 데만 사용됩니다. 도커 엔진을 통하지 않고 컨테이너를 직접 실행할 수 있는 명령줄 가젯으로 생각할 수 있습니다. 실제로 runC는 표준화의 산물이며 OCI 표준에 따라 컨테이너를 생성하고 실행합니다. OCI(Open Container Initiative) 조직은 컨테이너 형식 및 런타임에 대한 개방형 산업 표준을 개발하는 것을 목표로 합니다.

RunC 명령줄을 직접 사용하여 컨테이너를 생성하고 간단한 상호 작용 기능을 제공할 수 있습니다.

위에서 각 구성 요소의 기능과 관계를 소개했습니다. 다음은 다음 그림을 통해 자세히 설명합니다.

엔비디아 docker2가 뭐죠?

일반적인 컨테이너 생성 과정은 다음과 같습니다.

docker --> dockerd --> containerd--> containerd-shim -->runc --> container-process
로그인 후 복사

Docker 클라이언트 컨테이너 요청은 dockerd로 전송됩니다. dockerd는 요청 작업을 수신하면 확인하고 확인한 후 컨테이너d-shim을 시작하거나 자체적으로 컨테이너 프로세스를 시작합니다.

GPU를 사용하는 컨테이너 만들기

GPU 컨테이너를 만드는 과정은 다음과 같습니다.

docker--> dockerd --> containerd --> containerd-shim--> nvidia-container-runtime --> nvidia-container-runtime-hook --> libnvidia-container --> runc -- > container-process
로그인 후 복사

Docker의 기본 런타임이 다음과 같다는 점을 제외하면 기본 프로세스는 GPU를 사용하지 않는 컨테이너와 유사합니다. NVIDIA 자체 nvidia-container-runtime 으로 대체되었습니다.

이런 방식으로 nvidia-container-runtime은 컨테이너를 생성할 때 먼저 nvidia-container-runtime-hook 후크를 실행하여 컨테이너가 GPU를 사용해야 하는지 확인합니다(환경 변수 NVIDIA_VISIBLE_DEVICES로 판단). 필요한 경우 libnvidia-container를 호출하여 GPU를 컨테이너에 노출합니다. 그렇지 않으면 기본 runc 논리가 사용됩니다.

이 시점에서 nvidia-docker2.0의 일반적인 메커니즘은 기본적으로 명확합니다. 다만, 본 글에서는 nvidia-container-runtime, libnvidia-container, Containerd, runc에 관련된 프로젝트를 하나씩 소개하지 않겠습니다. 관심이 있으시면 스스로 탐색하고 학습하실 수 있습니다. 이 프로젝트의 주소는 기사에 링크되어 있습니다.

추천 학습: "Docker Video Tutorial"

위 내용은 엔비디아 docker2가 뭐죠?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Docker exec를 사용하여 Docker 컨테이너에서 명령을 실행하는 방법 Docker exec를 사용하여 Docker 컨테이너에서 명령을 실행하는 방법 Mar 05, 2025 pm 03:42 PM

이 기사에서는 Docker Exec 명령을 사용하여 실행중인 Docker 컨테이너 내에서 명령을 실행하는 방법을 설명합니다. 기본 구문, 옵션 (예 : 인터랙티브 사용 및 분리 모드의 경우 -D), 쉘 액세스, 일반적인 사용 사례 (디버깅, 관리

Docker의 Docker는 무엇입니까? Docker는 무엇입니까? Docker의 Docker는 무엇입니까? Docker는 무엇입니까? Mar 05, 2025 pm 03:49 PM

이 기사에서는 컨테이너화 플랫폼 인 Docker가 응용 프로그램 구축, 운송 및 달리기를 단순화하는 것을 설명합니다. 앱과 고립 된 컨테이너로 의존성을 포장하여 "내 컴퓨터에서 작동하는"문제를 해결하여 CON을 개선합니다.

Docker는 환경 또는 소프트웨어입니다 Docker는 환경 또는 소프트웨어입니다 Mar 05, 2025 pm 03:38 PM

이 기사는 Docker를 설명하여 가상 머신과 대조합니다. Docker는 컨테이너화를 사용하여 가벼운 리소스 효율적인 응용 분리를 위해 호스트 OS 커널을 공유합니다. 주요 장점에는 속도, 이식성, 배치 용이성, a

Docker Swarm 클러스터에 응용 프로그램을 어떻게 배포합니까? Docker Swarm 클러스터에 응용 프로그램을 어떻게 배포합니까? Mar 17, 2025 pm 04:20 PM

이 기사는 응용 프로그램을 Docker Swarm에 배포하고 프로세스 중 준비, 배포 단계 및 보안 조치를 다루는 자세한 내용을 자세히 설명합니다.

Docker의 Docker는 무엇입니까? Docker는 무엇입니까? Docker의 Docker는 무엇입니까? Docker는 무엇입니까? Mar 05, 2025 pm 03:46 PM

Docker는 컨테이너화를 통해 응용 프로그램 구축, 운송 및 실행을 단순화합니다. 일관된 개발 환경, 더 빠른주기, 개선 된 협업 및 간소화 된 CI/CD를 제공하여 휴대용, 확장 가능하며 리소스 효율적인 기능을 제공합니다.

Docker의 Docker는 무엇입니까? Docker는 무엇입니까? Docker의 Docker는 무엇입니까? Docker는 무엇입니까? Mar 05, 2025 pm 03:39 PM

이 기사에서는 응용 프로그램 생성, 배포 및 실행을 단순화하는 컨테이너화 플랫폼 인 Docker가 설명합니다. 효율성, 일관성, 자원 활용 및 간소화 된 배포와 같은 Docker의 이점을 강조합니다. 다양한 사용

Kubernetes에서 응용 프로그램을 어떻게 확장합니까? Kubernetes에서 응용 프로그램을 어떻게 확장합니까? Mar 17, 2025 pm 04:28 PM

이 기사는 수동 스케일링, HPA, VPA 및 클러스터 자동 구동기를 사용하여 Kubernetes의 스케일링 응용 프로그램에 대해 설명하며 스케일링 모니터링 및 자동화를위한 모범 사례 및 도구를 제공합니다.

Kubernetes 포드, 배포 및 서비스는 무엇입니까? Kubernetes 포드, 배포 및 서비스는 무엇입니까? Mar 17, 2025 pm 04:25 PM

이 기사는 Kubernetes의 포드, 배포 및 서비스를 설명하여 컨테이너화 된 응용 프로그램 관리의 역할을 자세히 설명합니다. 이러한 구성 요소가 응용 프로그램 내에서 확장 성, 안정성 및 통신을 향상시키는 방법에 대해 설명합니다. (159 자)

See all articles