Rumah Operasi dan penyelenggaraan operasi dan penyelenggaraan linux Linux dan Docker: Bagaimana untuk melaksanakan penjadualan dinamik dan pengurusan sumber kontena?

Linux dan Docker: Bagaimana untuk melaksanakan penjadualan dinamik dan pengurusan sumber kontena?

Jul 29, 2023 pm 04:25 PM
linux docker penjadualan dinamik

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.

  1. 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
Salin selepas log masuk

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%.

  1. 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;
}
Salin selepas log masuk

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.

  1. 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
Salin selepas log masuk

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
  1. 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
Salin selepas log masuk

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara Mengubah Sumber Imej Docker di China Cara Mengubah Sumber Imej Docker di China Apr 15, 2025 am 11:30 AM

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.

Cara membuat cermin di Docker Cara membuat cermin di Docker Apr 15, 2025 am 11:27 AM

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.

Cara menggunakan desktop docker Cara menggunakan desktop docker Apr 15, 2025 am 11:45 AM

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).

Cara Membina Repositori Swasta oleh Docker Cara Membina Repositori Swasta oleh Docker Apr 15, 2025 am 11:06 AM

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.

Cara memanggil Docker LNMP Cara memanggil Docker LNMP Apr 15, 2025 am 11:15 AM

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

Cara menjalankan arahan Docker Cara menjalankan arahan Docker Apr 15, 2025 am 11:24 AM

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

Cara Menyelamatkan Gambar Docker Cara Menyelamatkan Gambar Docker Apr 15, 2025 am 11:54 AM

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].

Cara mengemas kini imej Docker Cara mengemas kini imej Docker Apr 15, 2025 pm 12:03 PM

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)

See all articles