尊龙凯时人生就是搏

LinuxºÍDocker£ºÔõÑùʵÏÖÈÝÆ÷µÄ¶¯Ì¬µ÷ÀíºÍ×ÊÔ´ÖÎÀí£¿

linuxºÍdocker: ÔõÑùʵÏÖÈÝÆ÷µÄ¶¯Ì¬µ÷ÀíºÍ×ÊÔ´ÖÎÀí£¿

ͻ񻣼

Ëæ×ÅÈÝÆ÷ÊÖÒÕµÄѸËÙÉú³¤ºÍÆÕ±éÓ¦Óã¬ÔõÑù¸üºÃµØʵÏÖÈÝÆ÷µÄ¶¯Ì¬µ÷ÀíºÍ×ÊÔ´ÖÎÀí³ÉΪÁËÒ»¸öÖ÷ÒªµÄ»°Ìâ¡£±¾ÎĽ«ÖصãÏÈÈÝLinuxºÍDockerÖеÄһЩ³£ÓûúÖƺÍÒªÁ죬ÒÔ¼°Ê¾Àý´úÂ룬×ÊÖú¶ÁÕ߸üºÃµØÃ÷È·ÈÝÆ÷µÄ¶¯Ì¬µ÷ÀíºÍ×ÊÔ´ÖÎÀí¡£

СÐò£º

ÈÝÆ÷ÊÖÒÕµÄÐËÆðΪӦÓóÌÐòµÄ°²ÅźÍÔËÐдøÀ´Á˸ïÃüÐÔµÄת±ä¡£¹Å°åµÄÐéÄ⻯ÊÖÒÕÐèÒªÐéÄâ»úÖÎÀí³ÌÐò£¬¶øÈÝÆ÷ÊÖÒÕÔò¿ÉÒÔÖ±½ÓÔÚËÞÖ÷»úÉÏÔËÐÐÓ¦ÓóÌÐò£¬²»ÐèÒªÌØÁíÍâÖÎÀí³ÌÐò¡£

ÈÝÆ÷ÊÖÒյĽ¹µãÊÇÈÝÆ÷ÒýÇ棬ÆäÖÐ×îÖøÃûµÄ¾ÍÊÇDocker¡£DockerÌṩÁËÒ»ÖÖÇáÁ¿¼¶ÇÒÒ×ÓÚʹÓõÄÈÝÆ÷½â¾ö¼Æ»®£¬³ÉΪÁËÈÝÆ÷ÊÖÒյĴú±í¡£±¾ÎĽ«ÒÔDockerΪÀý£¬ÍŽáLinuxϵͳµÄ»úÖÆ£¬ÏÈÈÝÔõÑùʵÏÖÈÝÆ÷µÄ¶¯Ì¬µ÷ÀíºÍ×ÊÔ´ÖÎÀí¡£

Ò»¡¢LinuxÖеÄÈÝÆ÷ÊÖÒÕ

ÔÚLinuxϵͳÖУ¬ÈÝÆ÷ÊÖÒÕÖ÷ÒªÒÀÀµÓÚÁ½¸öÖ÷ÒªµÄ¹¦Ð§£¬¼´cgroupºÍnamespace¡£cgroup£¨control groups£©¿ÉÒÔʵÏÖ¶Ôϵͳ×ÊÔ´µÄÏÞÖƺÍÖÎÀí£¬¶ønamespace¿ÉÒÔʵÏÖ¶ÔÀú³ÌºÍÎļþϵͳµÄ¸ôÀë¡£

cgroup

cgroupÊÇÒ»ÖÖ¹¦Ð§Ç¿Ê¢µÄ×ÊÔ´ÉèÖúÍÏÞÖÆ»úÖÆ£¬¿ÉÒÔΪ²î±ðµÄÀú³Ì×éÉèÖÃ×ÊÔ´ÏÞÖÆ¡£Í¨¹ýʹÓÃcgroup£¬ÎÒÃÇ¿ÉÒÔΪÈÝÆ÷ÖеÄÀú³ÌºÍÍⲿÀú³ÌÖ¸¶¨²î±ðµÄ×ÊÔ´ÏÞÖÆ£¬ÈçCPUÅä¶î¡¢ÄÚ´æÅä¶îµÈ¡£ÔÚLinuxϵͳÖУ¬cgroup±»ÆÕ±éÓ¦ÓÃÓÚʵÏÖÈÝÆ÷µÄ×ÊÔ´ÖÎÀí¡£

ÏÂÃæÊÇÒ»¸öʹÓÃcgroupÏÞÖÆÈÝÆ÷ÄÚÀú³ÌCPUʹÓÃÂʵÄʾÀý´úÂ룺

#!/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

µÇ¼ºó¸´ÖÆ

ÔÚÉÏÃæµÄʾÀýÖУ¬ÎÒÃÇʹÓÃcgcreateÏÂÁÉèÁËÒ»¸öÃûΪdocker_containerµÄcgroup£¬²¢Ê¹ÓÃcgsetÉèÖÃÁ˸ÃcgroupµÄCPUÅä¶îΪ50%¡£È»ºóÎÒÃÇʹÓÃdockerÏÂÁîÆô¶¯ÁËÒ»¸öÃûΪmy_containerµÄÈÝÆ÷£¬²¢½«Æä¹éÊôÓÚdocker_containerÕâ¸öcgroup¡£ÕâÑù£¬¸ÃÈÝÆ÷ÄÚµÄÀú³ÌµÄCPUʹÓÃÂʽ«±»ÏÞÖÆÔÚ50%ÒÔÄÚ¡£

namespace

namespace¿ÉÒÔΪÀú³ÌÌṩһ¸ö×ÔÁ¦µÄÔËÐÐÇéÐΣ¬°üÀ¨ÎļþϵͳºÍÀú³Ì¿Õ¼ä¡£Í¨¹ýʹÓÃnamespace£¬ÎÒÃÇ¿ÉÒÔʵÏÖÈÝÆ÷ÓëËÞÖ÷»úÖ®¼äµÄ¸ôÀë¡£

ÏÂÃæÊÇÒ»¸öʹÓÃnamespace¸ôÀëÈÝÆ÷ÖÐÎļþϵͳµÄʾÀý´úÂ룺

#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;
}

µÇ¼ºó¸´ÖÆ

ÔÚÉÏÃæµÄʾÀýÖУ¬ÎÒÃÇʹÓÃunshareº¯Êý½¨ÉèÁËÒ»¸öеÄnamespace£¬²¢ÔÚÆäÖйÒÔØÁËÒ»¸örootfsÎļþϵͳ¡£½Ó×Å£¬ÎÒÃÇÖ´ÐÐÁËÒ»¸ö/bin/bashÏÂÁÕâ¸ö±»Ö´ÐеÄÏÂÁÔÚеÄnamespaceÖÐÔËÐУ¬´Ó¶øʵÏÖÁ˶ÔÎļþϵͳµÄ¸ôÀë¡£

¶þ¡¢DockerÖеÄÈÝÆ÷µ÷ÀíºÍ×ÊÔ´ÖÎÀí

DockerÔÚÌṩÈÝÆ÷µÄ»ù´¡ÉÏ£¬»¹ÌṩÁËһЩ¸ß¼¶¹¦Ð§£¬ÈçÈÝÆ÷µÄ¶¯Ì¬µ÷ÀíºÍ×ÊÔ´ÖÎÀí¡£ÕâЩ¹¦Ð§Ê¹µÃDocker³ÉΪһ¸öÇ¿Ê¢µÄÈÝÆ÷ÖÎÀíƽ̨¡£

ÈÝÆ÷µÄ¶¯Ì¬µ÷Àí

Dockerͨ¹ýʹÓõ÷ÀíÆ÷£¨scheduler£©ÊµÏÖÈÝÆ÷µÄ¶¯Ì¬µ÷Àí¡£µ÷ÀíÆ÷¿ÉÒÔƾ֤²î±ðµÄµ÷ÀíÕ½ÂÔ×Ô¶¯½«ÈÝÆ÷·ÖÅɸøËÞÖ÷»ú¡£³£Óõĵ÷ÀíÕ½ÂÔÓУº

Ëæ»úµ÷Àí£ºÆ¾Ö¤Ëæ»úËã·¨½«ÈÝÆ÷·ÖÅɸøËÞÖ÷»ú £»

¸ºÔØƽºâµ÷Àí£ºÆ¾Ö¤ËÞÖ÷»úµÄ¸ºÔØÇéÐν«ÈÝÆ÷·ÖÅɸø×î¿ÕÏеÄËÞÖ÷»ú £»

Э×÷µ÷Àí£º

ÏÂÃæÊÇÒ»¸öʹÓÃDockerµÄµ÷ÀíÆ÷¾ÙÐÐÈÝÆ÷µ÷ÀíµÄʾÀý´úÂ룺

#!/bin/bash

# ʹÓøºÔØƽºâµ÷ÀíÆ÷
docker run -d -p 8080:80 --name=mynginx --scheduler=random nginx

µÇ¼ºó¸´ÖÆ

ÔÚÉÏÃæµÄʾÀýÖУ¬ÎÒÃÇʹÓÃÁ˸ºÔØƽºâµ÷ÀíÆ÷½«Ò»¸öÃûΪmynginxµÄÈÝÆ÷·ÖÅɸøÒ»¸öËÞÖ÷»ú¡£¸ÃÈÝÆ÷½«¼àÌýËÞÖ÷»úµÄ8080¶Ë¿Ú£¬²¢½«ÇëÇóת·¢µ½ÈÝÆ÷ÄÚµÄ80¶Ë¿Ú¡£

×ÊÔ´ÖÎÀí

DockerÌṩÁËһϵÁÐÏÂÁîºÍAPIÒÔʵÏÖ¶ÔÈÝÆ÷µÄ×ÊÔ´ÖÎÀí¡£ÎÒÃÇ¿ÉÒÔʹÓÃÕâЩ¹¦Ð§À´¼à¿ØºÍÖÎÀíÈÝÆ÷µÄ×ÊԴʹÓÃÇéÐΡ£

ÏÂÃæÊÇÒ»¸öʹÓÃDockerÏÂÁîÉó²éÈÝÆ÷×ÊԴʹÓÃÇéÐεÄʾÀý´úÂ룺

#!/bin/bash

# Éó²éÈÝÆ÷µÄCPUʹÓÃÇéÐÎ
docker stats --format "table {{.Container}}    {{.CPUPerc}}    {{.MemUsage}}" my_container

µÇ¼ºó¸´ÖÆ

ÔÚÉÏÃæµÄʾÀýÖУ¬ÎÒÃÇʹÓÃdocker statsÏÂÁîÉó²éÁËÒ»¸öÃûΪmy_containerµÄÈÝÆ÷µÄCPUʹÓÃÂʺÍÄÚ´æʹÓÃÇéÐΡ£

½áÂÛ£º

±¾ÎÄÏÈÈÝÁËLinuxºÍDockerÖÐʵÏÖÈÝÆ÷µÄ¶¯Ì¬µ÷ÀíºÍ×ÊÔ´ÖÎÀíµÄһЩ³£ÓÃÒªÁìºÍʾÀý´úÂ롣ͨ¹ýʹÓÃcgroupʵÏÖ×ÊÔ´ÏÞÖƺÍʹÓÃnamespaceʵÏÖÇéÐθôÀ룬ÎÒÃÇ¿ÉÒÔ¸üºÃµØÖÎÀíºÍÔËάÈÝÆ÷¡£Docker½øÒ»²½ÌṩÁ˸߼¶¹¦Ð§£¬È綯̬µ÷ÀíºÍ×ÊÔ´ÖÎÀí£¬×ÊÖúÎÒÃǸüºÃµØʹÓÃÈÝÆ÷ÊÖÒÕ¡£Ï£Íûͨ¹ý±¾ÎĵÄÏÈÈÝ£¬¶ÁÕßÄܶÔÈÝÆ÷µÄ¶¯Ì¬µ÷ÀíºÍ×ÊÔ´ÖÎÀíÓиüÉîÈëµÄÃ÷È·¡£

ÒÔÉϾÍÊÇLinuxºÍDocker£ºÔõÑùʵÏÖÈÝÆ÷µÄ¶¯Ì¬µ÷ÀíºÍ×ÊÔ´ÖÎÀí£¿µÄÏêϸÄÚÈÝ£¬¸ü¶àÇë¹Ø×¢±¾ÍøÄÚÆäËüÏà¹ØÎÄÕ£¡

ÃâÔð˵Ã÷£ºÒÔÉÏչʾÄÚÈÝȪԴÓÚÏàÖúýÌå¡¢ÆóÒµ»ú¹¹¡¢ÍøÓÑÌṩ»òÍøÂçÍøÂçÕûÀí£¬°æȨÕùÒéÓë±¾Õ¾Î޹أ¬ÎÄÕÂÉæ¼°¿´·¨Óë¿´·¨²»´ú±í尊龙凯时人生就是搏ÂËÓÍ»úÍø¹Ù·½Ì¬¶È£¬Çë¶ÁÕß½ö×ö²Î¿¼¡£±¾ÎĽӴýתÔØ£¬×ªÔØÇë˵Ã÷À´ÓÉ¡£ÈôÄúÒÔΪ±¾ÎÄÇÖÕ¼ÁËÄúµÄ°æȨÐÅÏ¢£¬»òÄú·¢Ã÷¸ÃÄÚÈÝÓÐÈκÎÉæ¼°ÓÐÎ¥¹«µÂ¡¢Ã°·¸Ö´·¨µÈÎ¥·¨ÐÅÏ¢£¬ÇëÄúÁ¬Ã¦ÁªÏµ尊龙凯时人生就是搏ʵʱÐÞÕý»òɾ³ý¡£

Ïà¹ØÐÂÎÅ

ÁªÏµ尊龙凯时人生就是搏

18523999891

¿É΢ÐÅÔÚÏß×Éѯ

ÊÂÇéʱ¼ä£ºÖÜÒ»ÖÁÖÜÎ壬9:30-18:30£¬½ÚãåÈÕÐÝÏ¢

QR code
sitemap¡¢ÍøÕ¾µØͼ