


Linux dan Docker: Bagaimana untuk melaksanakan penjadualan dinamik dan pengurusan sumber kontena?
Linux dan Docker: Bagaimana untuk melaksanakan penjadualan dinamik dan pengurusan sumber kontena?
Abstrak:
Dengan perkembangan pesat dan aplikasi teknologi kontena yang meluas, cara untuk melaksanakan penjadualan dinamik dan pengurusan sumber kontena dengan lebih baik telah menjadi topik penting. Artikel ini akan menumpukan pada beberapa mekanisme dan kaedah biasa dalam Linux dan Docker, serta kod sampel, untuk membantu pembaca memahami dengan lebih baik penjadualan dinamik dan pengurusan sumber kontena.
Pengenalan:
Peningkatan teknologi kontena telah membawa perubahan revolusioner kepada penggunaan dan pengendalian aplikasi. Teknologi virtualisasi tradisional memerlukan hypervisor, manakala teknologi kontena boleh menjalankan aplikasi secara langsung pada mesin hos tanpa memerlukan hypervisor tambahan.
Inti teknologi kontena ialah enjin kontena, yang paling terkenal ialah Docker. Docker menyediakan penyelesaian kontena yang ringan dan mudah digunakan dan telah menjadi wakil teknologi kontena. Artikel ini akan mengambil Docker sebagai contoh dan menggabungkannya dengan mekanisme sistem Linux untuk memperkenalkan cara melaksanakan penjadualan dinamik dan pengurusan sumber kontena.
1. Teknologi kontena dalam Linux
Dalam sistem Linux, teknologi kontena bergantung terutamanya pada dua fungsi penting, iaitu cgroup dan ruang nama. cgroups (kumpulan kawalan) boleh mengehadkan dan mengurus sumber sistem, manakala ruang nama boleh mengasingkan proses dan sistem fail.
- cgroup
cgroup ialah konfigurasi sumber yang berkuasa dan mekanisme sekatan yang boleh menetapkan had sumber untuk kumpulan proses yang berbeza. Dengan menggunakan cgroups, kami boleh menentukan had sumber yang berbeza, seperti kuota CPU, kuota memori, dsb., untuk proses dalam bekas dan proses luaran. Dalam sistem Linux, cgroup digunakan secara meluas untuk melaksanakan pengurusan sumber kontena.
Berikut ialah contoh kod yang menggunakan cgroups untuk mengehadkan penggunaan CPU proses dalam bekas:
#!/bin/bash # 创建cgroup cgcreate -g cpu:/docker_container # 设置CPU配额为50% cgset -r cpu.cfs_quota_us=50000 /docker_container # 启动容器 docker run -d -it --name=my_container --cgroup-parent=/docker_container ubuntu /bin/bash
Dalam contoh di atas, kami menggunakan arahan cgcreate untuk mencipta cgroup bernama docker_container, dan menggunakan cgset untuk menetapkan kuota CPU bagi cgroup ialah 50%. Kemudian kami menggunakan arahan docker untuk memulakan bekas bernama my_container dan mengaitkannya kepada docker_container cgroup. Dengan cara ini, penggunaan CPU bagi proses dalam bekas akan dihadkan kepada 50%.
- ruang nama
ruang nama boleh menyediakan persekitaran berjalan bebas untuk proses, termasuk sistem fail dan ruang proses. Dengan menggunakan ruang nama, kita boleh mencapai pengasingan antara bekas dan hos.
Berikut ialah contoh kod yang menggunakan ruang nama untuk mengasingkan sistem fail dalam bekas:
#define _GNU_SOURCE #include <sched.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main() { // 创建一个新的namespace int ret = unshare(CLONE_NEWNS); if (ret) { perror("unshare"); exit(EXIT_FAILURE); } // 在新的namespace中挂载一个文件系统 ret = mount("rootfs", "/mnt", "ext4", MS_MGC_VAL, NULL); if (ret) { perror("mount"); exit(EXIT_FAILURE); } // 执行容器需要的命令 system("/bin/bash"); return 0; }
Dalam contoh di atas, kami menggunakan fungsi nyahkongsi untuk mencipta ruang nama baharu dan memasang sistem fail rootfs di dalamnya. Seterusnya, kami melaksanakan perintah /bin/bash Perintah yang dilaksanakan ini akan dijalankan dalam ruang nama baharu, dengan itu mencapai pengasingan sistem fail.
2. Penjadualan kontena dan pengurusan sumber dalam Docker
Selain menyediakan bekas, Docker juga menyediakan beberapa fungsi lanjutan, seperti penjadualan dinamik dan pengurusan sumber kontena. Ciri-ciri ini menjadikan Docker sebagai platform pengurusan kontena yang berkuasa.
- Penjadualan dinamik kontena
Docker melaksanakan penjadualan dinamik kontena dengan menggunakan penjadual. Penjadual boleh menetapkan bekas secara automatik kepada hos berdasarkan dasar penjadualan yang berbeza. Strategi penjadualan yang biasa digunakan ialah:
- Penjadualan rawak: peruntukkan bekas kepada hos berdasarkan algoritma rawak
- Penjadualan pengimbangan beban: peruntukkan bekas kepada hos yang paling terbiar berdasarkan beban hos Kolaboratif; Berikut ialah kod sampel untuk penjadualan kontena menggunakan penjadual Docker:
#!/bin/bash # 使用负载均衡调度器 docker run -d -p 8080:80 --name=mynginx --scheduler=random nginx
Dalam contoh di atas, kami menggunakan penjadual pengimbangan beban untuk menetapkan bekas bernama mynginx kepada hos. Bekas akan mendengar pada port 8080 hos dan memajukan permintaan ke port 80 dalam bekas.
Pengurusan Sumber- Docker menyediakan satu siri arahan dan API untuk melaksanakan pengurusan sumber kontena. Kami boleh menggunakan ciri ini untuk memantau dan mengurus penggunaan sumber bekas.
Berikut ialah contoh kod yang menggunakan arahan Docker untuk melihat penggunaan sumber bekas:
#!/bin/bash # 查看容器的CPU使用情况 docker stats --format "table {{.Container}} {{.CPUPerc}} {{.MemUsage}}" my_container
Dalam contoh di atas, kami menggunakan arahan statistik docker untuk melihat penggunaan CPU dan penggunaan memori bagi bekas bernama my_container.
Kesimpulan:
Artikel ini memperkenalkan beberapa kaedah biasa dan kod sampel untuk melaksanakan penjadualan dinamik dan pengurusan sumber kontena dalam Linux dan Docker. Dengan menggunakan cgroups untuk melaksanakan sekatan sumber dan ruang nama untuk melaksanakan pengasingan persekitaran, kami boleh mengurus dan mengendalikan kontena dengan lebih baik. Docker seterusnya menyediakan ciri lanjutan, seperti penjadualan dinamik dan pengurusan sumber, untuk membantu kami menggunakan teknologi kontena dengan lebih baik. Saya berharap melalui pengenalan artikel ini, pembaca dapat memahami dengan lebih mendalam tentang penjadualan dinamik dan pengurusan sumber kontena.Atas ialah kandungan terperinci Linux dan Docker: Bagaimana untuk melaksanakan penjadualan dinamik dan pengurusan sumber kontena?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Anda boleh beralih ke sumber cermin domestik. Langkah -langkah adalah seperti berikut: 1. Edit fail konfigurasi /etc/docker/daemon.json dan tambahkan alamat sumber cermin; 2. Selepas menyimpan dan keluar, mulakan semula perkhidmatan Docker Sudo SystemCtl Docker untuk meningkatkan kelajuan muat turun dan kestabilan imej.

Langkah -langkah untuk membuat imej Docker: Tulis Dockerfile yang mengandungi arahan membina. Bina imej di terminal, menggunakan arahan membina Docker. Tag imej dan tetapkan nama dan tag menggunakan arahan tag docker.

Bagaimana cara menggunakan desktop Docker? Docktop Docktop adalah alat untuk menjalankan bekas Docker pada mesin tempatan. Langkah -langkah untuk digunakan termasuk: 1. Pasang desktop Docker; 2. Mulakan desktop Docker; 3. Buat imej Docker (menggunakan Dockerfile); 4. Membina imej Docker (menggunakan Docker Build); 5. Jalankan bekas Docker (menggunakan Docker Run).

Anda boleh membina repositori peribadi Docker untuk menyimpan dan menguruskan imej kontena dengan selamat, memberikan kawalan dan keselamatan yang ketat. Langkah -langkah termasuk: mewujudkan repositori, memberikan akses, mengerahkan repositori, menolak imej, dan menarik imej. Kelebihan termasuk keselamatan, kawalan versi, mengurangkan trafik rangkaian dan penyesuaian.

Docker LNMP Container Call Langkah: Jalankan bekas: Docker Run -D -Name LNMP -Container -P 80:80 -P 443: 443 LNMP -Stack Untuk mendapatkan IP Container: Docker Memeriksa LNMP -Container | GREP IPADDRESS ACCESS Laman web: http: // & lt; container ip & gt; /index.phpssh akses: docker exec -it lnmp -container bash akses mysql: mysql -u roo

Bagaimana cara menjalankan arahan Docker? Pasang Docker dan mulakan daemon. Perintah Docker Biasa: Docker Images: Paparan Docker Imej PS: Paparan Docker Container Run: Run Container Docker Stop: Stop Container Docker RM: Padam Container Berinteraksi dengan Kontena Menggunakan Docker Command: Docker Exec: Execute Command Docker Lampir

Untuk menyimpan imej di Docker, anda boleh menggunakan arahan Docker Commit untuk membuat imej baru, yang mengandungi keadaan semasa bekas yang ditentukan, Sintaks: Docker Commit [Options] Nama Imej Container ID. Untuk menyimpan imej ke repositori, anda boleh menggunakan arahan PUSH Docker, Sintaks: Docker Push Nama Imej [: TAG]. Untuk mengimport imej yang disimpan, anda boleh menggunakan arahan tarik docker, sintaks: docker tarik nama imej [: tag].

Langkah -langkah untuk mengemas kini imej Docker adalah seperti berikut: Tarik tag imej terkini imej baru memadam imej lama untuk tag tertentu (pilihan) mulakan semula bekas (jika diperlukan)
