Rumah > Artikel > Operasi dan penyelenggaraan > apakah nvidia docker2
nvidia-docker2.0 ialah pakej ringkas, yang terutamanya membenarkan docker menggunakan masa jalan NVIDIA Container dengan mengubah suai fail konfigurasi docker "/etc/docker/daemon.json".
Persekitaran pengendalian artikel ini: sistem Windows 10, Docker versi 20.10.11, komputer Dell G3.
Pengenalan kepada NVidia Docker
NVIDIA mula mereka bentuk NVIDIA-Docker pada 2016 untuk memudahkan bekas menggunakan GPU NVIDIA. Generasi pertama nvidia-docker1.0 melaksanakan enkapsulasi klien docker dan memasang peranti dan perpustakaan GPU yang diperlukan ke dalam bekas apabila bekas dimulakan. Walau bagaimanapun, kaedah reka bentuk ini sangat digabungkan dengan masa larian docker dan tidak mempunyai fleksibiliti. Kecacatan sedia ada adalah seperti berikut:
Reka bentuk sangat digabungkan dengan docker dan tidak menyokong masa jalan kontena lain. Seperti: LXC, CRI-O dan masa jalan kontena yang mungkin ditambah pada masa hadapan.
Tidak dapat menggunakan alat lain dengan lebih baik dalam ekosistem docker. Seperti: docker compose.
GPU tidak boleh digunakan sebagai sumber sistem penjadualan untuk penjadualan fleksibel.
Tingkatkan sokongan GPU semasa masa jalan kontena. Contohnya: secara automatik mendapatkan perpustakaan Pemacu NVIDIA peringkat pengguna, modul kernel NVIDIA, pesanan peranti, dsb.
Berdasarkan kelemahan yang diterangkan di atas, NVIDIA memulakan reka bentuk masa jalan kontena generasi seterusnya: nvidia-docker2.0.
Mekanisme pelaksanaan nvidia-docker 2.0
Pertama sekali, mari kita perkenalkan secara ringkas hubungan langsung antara nvidia-docker 2.0, containerd, nvidia-container-runtime, libnvidia- bekas dan runc .
Hubungan antara mereka boleh dikaitkan melalui gambar berikut:
nvidia-docker 2.0
nvidia -docker2.0 ialah pakej ringkas yang membolehkan docker menggunakan masa jalan Kontena NVIDIA dengan mengubah suai fail konfigurasi docker /etc/docker/daemon.json.
nvidia-container-runtime
nvidia-container-runtime ialah bahagian teras sebenar Ia menambah pramula semula berdasarkan runc bekas docker asal, yang digunakan untuk memanggil perpustakaan bekas libnvidia.
libnvidia-container
libnvidia-container menyediakan perpustakaan dan alat CLI ringkas yang boleh digunakan untuk membuat GPU NVIDIA digunakan oleh bekas Linux.
Containerd
Containerd bertanggungjawab terutamanya untuk:
Mengurus kitaran hayat kontena (dari penciptaan kontena hingga kemusnahan )
Tarik/Tolak imej bekas
Pengurusan storan (uruskan storan imej dan data bekas)
Panggil runc untuk menjalankan bekas
Urus antara muka rangkaian dan rangkaian bekas
Apabila containerd Selepas menerima permintaan, buat persediaan yang berkaitan Anda boleh memilih untuk memanggil runc sendiri atau mencipta containerd-shim dan kemudian memanggil runc berdasarkan fail OCI. Di atas adalah proses asas penciptaan kontena biasa.
RunC
RunC ialah alat ringan yang digunakan untuk menjalankan bekas Ia hanya digunakan untuk melakukan satu perkara dan satu perkara Lakukan dengan baik. Kita boleh menganggapnya sebagai alat baris arahan yang boleh menjalankan kontena secara langsung tanpa melalui enjin docker. Malah, runC ialah produk penyeragaman dan ia mencipta dan menjalankan bekas mengikut piawaian OCI. Organisasi OCI (Inisiatif Kontena Terbuka) bertujuan untuk membangunkan piawaian industri terbuka di sekitar format kontena dan masa jalan.
Anda boleh terus menggunakan baris arahan RunC untuk mencipta bekas dan menyediakan keupayaan interaksi yang mudah.
Fungsi setiap komponen dan hubungan di antara mereka telah diperkenalkan di atas Seterusnya, mari kita huraikan gambar ini secara terperinci:
Buat bekas seperti biasa. proses adalah seperti berikut:
docker --> dockerd --> containerd--> containerd-shim -->runc --> container-process
Pelanggan docker menghantar permintaan untuk mencipta bekas kepada dockerd Apabila dockerd menerima tugas permintaan, ia menghantar permintaan kepada containerd. shim atau Mulakan proses bekas sendiri.
Buat bekas yang menggunakan GPU
Proses mencipta bekas GPU adalah seperti berikut:
docker--> dockerd --> containerd --> containerd-shim--> nvidia-container-runtime --> nvidia-container-runtime-hook --> libnvidia-container --> runc -- > container-process
Proses asas adalah serupa dengan bekas yang tidak menggunakan GPU Hanya gantikan masa jalan lalai docker dengan masa jalanan nvidia-bekas NVIDIA.
Dengan cara ini, apabila nvidia-container-runtime mencipta bekas, ia mula-mula melaksanakan cangkuk nvidia-container-runtime-hook untuk menyemak sama ada bekas itu perlu menggunakan GPU (dinilai oleh pembolehubah persekitaran NVIDIA_VISIBLE_DEVICES) . Jika perlu, hubungi libnvidia-container untuk mendedahkan GPU kepada bekas. Jika tidak, logik runc lalai digunakan.
Pada ketika ini, mekanisme umum nvidia-docker2.0 pada dasarnya jelas. Walau bagaimanapun, projek yang terlibat dalam nvidia-container-runtime, libnvidia-container, containerd, dan runc tidak akan diperkenalkan satu demi satu dalam artikel ini. Jika anda berminat, anda boleh meneroka dan belajar sendiri. Alamat projek ini telah dipautkan dalam artikel.
Pembelajaran yang disyorkan: "Tutorial Video Docker"
Atas ialah kandungan terperinci apakah nvidia docker2. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!