DSW memungkinkan Anda menggunakan perintah Docker di dalam kontainer utama instans untuk menjalankan dan mengelola kontainer sekunder (sub-kontainer).
Untuk menjalankan sub-kontainer dengan antarmuka pengguna grafis, lihat Kelola Sub-kontainer dengan DockerBoard.
Batasan
Fitur kontainer sekunder hanya tersedia untuk instans DSW yang dibuat dari kelompok sumber daya Lingjun atau kelompok sumber daya serbaguna versi 1.0.
Konfigurasi Docker Daemon (
/etc/docker/daemon.json) untuk kontainer sekunder saat ini tidak dapat dimodifikasi di instans DSW. Artinya, Anda tidak dapat menyesuaikan opsi konfigurasi sepertidata-rootdanregistry-mirrors.Me-restart instans akan menghapus semua data runtime di kontainer sekunder, termasuk gambar yang telah dibuat, meskipun fitur cloud disk diaktifkan. Untuk mencegah kehilangan data, kami menyarankan agar Anda secara berkala menyimpan lingkungan dan data penting Anda.
Saat menjalankan kontainer sekunder, Anda tidak dapat menggunakan parameter yang memberikan hak istimewa tinggi atau menimbulkan risiko keamanan. Tabel berikut mencantumkan beberapa parameter umum yang dibatasi:
Parameter
Description
--privileged
Memberikan hampir semua izin host machine kepada kontainer.
--ipc=host
Membagikan namespace IPC host dengan kontainer.
--security-opt
Memungkinkan melewati atau memodifikasi kebijakan keamanan kontainer.
--cap-add
Menambahkan kemampuan kernel Linux ke kontainer, sehingga memperluas cakupan izinnya.
CatatanJika Anda menemui pesan error berikut
Error response from daemon: authorization denied by plugin authZ: Permission deniedsaat menggunakandocker runataudocker createuntuk membuat kontainer sekunder, hal ini menunjukkan bahwa Anda menggunakan parameter yang dibatasi.
Buat dan konfigurasikan instans DSW
Saat membuat instans DSW, konfigurasikan parameter kunci berikut.
Resource Type: Pilih Resource Quota.
Resource Quota: Pilih kuota sumber daya Lingjun yang telah Anda buat. Untuk informasi selengkapnya, lihat Buat kelompok sumber daya baru dan beli sumber daya komputasi Lingjun.
Enable Multi-Container Isolation (DinD): Aktifkan sakelar ini.
Klik OK untuk membuat instans. Untuk langkah selanjutnya, lihat Bekerja dengan kontainer sekunder.
Bekerja dengan kontainer sekunder
Jalankan kontainer sekunder
Jalankan perintah berikut untuk memulai dan masuk ke kontainer sekunder:
docker run -it dsw-registry.cn-hangzhou.cr.aliyuncs.com/pai/pytorch:1.8PAI-gpu-py36-cu101-ubuntu18.04 /bin/bashMemasang perangkat:
Memasang GPU: Anda dapat menggunakan
--gpus=alluntuk memasang semua perangkat GPU di instans DSW.Memasang PPU: Berbeda dengan pemasangan GPU, Anda harus memasang perangkat PPU secara manual ke kontainer sekunder dengan menggunakan parameter
--device. Perintahnya adalah sebagai berikut:docker run -it --network=host \ --device=/dev/alixpu_ppu0 \ --device=/dev/alixpu \ --device=/dev/alixpu_ctl \ your-ppu-enabled-imageCatatanGambar kontainer sekunder harus telah memiliki komponen PPU yang diperlukan dalam kondisi pra-instal agar dapat menggunakan PPU.
Data pemasangan:
Anda dapat menggunakan Docker Bind Mount untuk memasang data ke dalam kontainer sekunder agar dapat diakses. Data tersebut terlebih dahulu dipasang ke instans DSW melalui Dataset Mounting atau Storage Path Mounting (Volume Mount dan tmpfs Mount saat ini tidak didukung). Misalnya, instans DSW ini memiliki data yang dipasang di path /mnt/data0 dan /mnt/data1. Anda dapat menggunakan parameter -v atau parameter --mount untuk melakukan Bind Mount path /mnt/data0 dan /mnt/data1 ke dalam kontainer sekunder:
# Dalam contoh ini, <path_in_dsw> dapat berupa /mnt/data0, /mnt/data1, atau subpath-nya.
# Path lain saat ini tidak dapat dipasang ke kontainer sekunder.
# Gunakan parameter -v
docker run -v <path_in_dsw>:<path_in_secondary_container>[:options] {image}
# Gunakan parameter --mount
docker run --mount type=bind,source=<path_in_dsw>,target=<path_in_secondary_container>[,readonly] {image}Akses kontainer sekunder
Anda dapat menggunakan perintah docker exec untuk menjalankan proses perintah baru di dalam kontainer yang sedang berjalan.
Misalnya, untuk menjalankan shell bash dalam mode interaktif (-i) dan mengalokasikan pseudo-terminal (-t), Anda dapat menggunakan perintah berikut:
docker exec -it your-container /bin/bashSaat ini, Anda tidak dapat menggunakan parameter yang menimbulkan risiko keamanan, seperti --privileged, untuk masuk ke kontainer.
Anda juga dapat menggunakan perintah docker attach untuk menyambungkan ke terminal proses utama dalam kontainer yang sedang berjalan. Jika Anda menjalankan kontainer dengan input standar terbuka (-i) dan pseudo-TTY dialokasikan (-t), Anda dapat melihat input/output standar kontainer (stdin/stdout/stderr) dan berinteraksi dengannya. Langkah-langkahnya adalah sebagai berikut:
docker attach {container_id}Untuk melepaskan diri dari kontainer tanpa menghentikannya, gunakan urutan escape default: Ctrl+p lalu Ctrl+q.
Buat gambar
Di dalam instans DSW, Anda dapat membuat gambar menggunakan Dockerfile. Jalankan perintah berikut:
docker build -t test-build .Karena pembatasan jaringan, Anda tidak dapat langsung menarik gambar dari Docker Hub. Kami menyarankan agar Anda menggunakan gambar dari Alibaba Cloud Container Registry (ACR) sebagai gambar dasar dalam instruksi FROM Anda.
Setelah proses build selesai, jalankan perintah berikut untuk melihat gambar yang baru dibuat:
root@dsw-330808-8445dd65f4-mhnrt:/mnt/workspace/test# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
test-build latest fad7fdb5e81a About a minute ago 15.4GBTarik gambar
Misalnya, untuk menarik gambar publik dari ACR, jalankan perintah berikut:
docker pull dsw-registry.cn-hangzhou.cr.aliyuncs.com/pai/pytorch:1.8PAI-gpu-py36-cu101-ubuntu18.04Untuk menarik gambar dari repositori pribadi, pertama-tama login dengan perintah docker login:
docker login --username={username} registry.cn-hangzhou.aliyuncs.comFAQ
Q: Mengapa saya tidak bisa melihat proses kontainer sekunder saat menjalankan perintah ps -aux di instans DSW?
Karena kontainer utama dan kontainer sekunder di DSW tidak berbagi namespace pid yang sama, proses yang berjalan di dalam kontainer sekunder tidak terlihat dari kontainer utama.
Q: Mengapa penarikan gambar dari Docker Hub gagal?
Penarikan gambar langsung dari Docker Hub gagal karena pembatasan jaringan. Anda akan melihat error seperti berikut:
root@dsw-381955:/mnt/workspace# docker run --network=host -it ubuntu /bin/bash
Unable to find image 'ubuntu:latest' locally
docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": context deadline exceeded.
See 'docker run --help'.Sebagai gantinya, tarik gambar dari Artifact Center di Alibaba Cloud Container Registry (ACR). Atau, lihat Penarikan lintas domain model atau gambar kontainer dari luar negeri.
Q: Apa yang harus saya lakukan jika melihat error "Error response from daemon: authorization denied by plugin authZ: Permission denied"?
Error ini terjadi ketika Anda menggunakan perintah atau parameter Docker yang tidak didukung. Untuk bantuan lebih lanjut, kirimkan tiket ke dukungan teknis.
Q: Apa yang harus saya lakukan jika melihat error "Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?"
Periksa apakah file /var/docker/proxy/docker-proxy.sock ada di instans DSW Anda. Jika ada, jalankan perintah berikut lalu coba lagi:
export DOCKER_HOST=unix:///var/docker/proxy/docker-proxy.sockSetelah mengatur variabel lingkungan tersebut, jalankan kembali perintah Docker.