1.å¦ä½å¨Ubuntuä¸åå©Docker管çLinux容å¨
2.å¦ä½è®¡ç®å®¹å¨çCPU使ç¨å¼
3.you need to apply patch when licence screen appears是码安什么意思?
4.Linux内核源码解析---cgroup实现之整体架构与初始化
5.Docker面试题
6.daemonlinux
å¦ä½å¨Ubuntuä¸åå©Docker管çLinux容å¨
è½è¯´æ åç硬件èæåææ¯ï¼æ¯å¦KVMãXenæHyper-Vï¼æ é¿äºå¨ä¸ä¸ªç©ç主æºä¸è¿è¡å¤ä¸ªæä½ç³»ç»çå®å ¨é离çå®ä¾ï¼ä½è¿ç§èæåææ¯å¨æ§è½ãèµæºåèµæºé ç½®æ¶é´çæ¹é¢åå¨åç§åæ ·çå¼éãæ åçæºå¨èæåå®é ä¸å¯è½æ²¡æå¿ è¦ï¼è¿åå³äºä½ çå®é 使ç¨åºåã
å¦å¤ä¸ç§è½»åèæåæ¹æ³å°±æ¯æè°çLinux容å¨ï¼LXCï¼ï¼å®æä¾äºæä½ç³»ç»çº§å«çèæåãç±äºä¸åå¨è¿è¡èææºå¸¦æ¥çå¼éï¼LXC让ç¨æ·å¯ä»¥å¨è½»å容å¨æ²çéé¢è¿è¡æ åLinuxæä½ç³»ç»çå¤ä¸ªå®ä¾ãå¦æä½ æ建ä¸ä¸ªå¯å¤å¶çå¼å/æµè¯ç¯å¢ï¼æè å¨å®å ¨æ²çéé¢é¨ç½²åºç¨ç¨åºï¼å®¹å¨å°±æ´¾å¾ä¸å¤§ç¨åºã
Dockerå°±æ¯ä¸ºäºä¾¿äºé¨ç½²Linux容å¨èå¼åçè¿æ ·ä¸æ¬¾å¼æºå·¥å ·ãDockeræ£è¿ éæ为容å¨ææ¯æ¹é¢çä¸é¡¹äºå®ä¸çæ åï¼å·²ç»è¢«è¯¸å¦Ubuntuå红帽ä¹ç±»çå大Linuxåè¡çæéç¨ã
æå¨æ¬æç¨ä¸å°æ¼ç¤ºå¦ä½å¨Ubuntu .ä¸ï¼åå©Docker管çLinux容å¨ã请注æï¼å¯¹Ubuntuçæ©æçæ¬èè¨ï¼æä½æ¥éª¤å¯è½ç¥æä¸åã
ç¼ä¸ï¼Ubuntuä¸å¯ç¨çDockerç¨åºå åªæ¯æä½ç³»ç»ãæ³å¨ä½æºå¨ä¸è¿è¡å®ï¼ä½ å°±è¦å©ç¨æºä»£ç æ建ä½çæ¬çDockerï¼è¯¦è§è¿éï¼ã
å®è£ Docker
åå©apt-getå½ä»¤ï¼å®è£ Dockeræ¯ä»¶è½»èæ举çäºã
$ sudo apt-get install docker.io
为äºå 许éæ ¹ç¨æ·ä¹å¯ä»¥è¿è¡Dockerï¼å°ä½ èªå·±æ·»å å°docker群ç»ãä¸é¢è¿ä¸ªå½ä»¤ä¼å 许å½åç¨æ·è¿è¡Dockerï¼æ éæ ¹ç¨æ·æéã
$ sudo usermod -a -G docker $USER
éåºï¼ç¶åéæ°ç»å½ï¼ä»¥æ¿æ´»ç¾¤ç»æåçååã
ä¸ä¸æ¥ï¼ç¼è¾Dockeré ç½®æ件ï¼ä»¥ä¾¿æ´æ°Dockeräºè¿å¶ä»£ç çä½ç½®ã
$ sudo vi /etc/default/docker.io
DOCKER="/usr/bin/docker.io"
éå¯Dockeræå¡ã
$ sudo service docker.io restart
管çDocker容å¨
å¦æä½ æ³å¯å¨Ubuntuæä½ç³»ç»çä¸ä¸ªæ°çDocker容å¨ï¼é¦å éè¦è·åUbuntu Dockeræ åæ件ãä¸é¢è¿ä¸ªå½ä»¤ä¼éè¿ç½ç»ä¸è½½Dockeræ åæ件ã
$ docker pull ubuntu
ä½ å¯ä»¥ä»¥ä¸ç§äº¤äºæ¨¡å¼æ¥å¼å¯Ubuntu Dockerï¼å¦ä¸æ示ãæåä¸ä¸ªåæ°â/bin/bashâæ¯ä¸æ¦å¯å¨å°±å°å¨å®¹å¨éé¢æ§è¡çå½ä»¤ï¼è¿éæ¯ä¸ä¸ªç®åçbashå¤å£³å½ä»¤ã
$ docker run -i -t ubuntu /bin/bash
ä¸è¿°å½ä»¤ä¼ç«å³å¯å¨ä¸ä¸ªUbuntu容å¨ï¼è¿æ£æ¯å®¹å¨çé åæå¨ï¼ï¼ï¼å¹¶ä¸ºä½ æä¾å®¹å¨éé¢çå¤å£³æ示符ãè¿æ¶åï¼ä½ åºè¯¥è½å¤è®¿é®æ²çç¯å¢éé¢çæ åçUbuntuæä½ç³»ç»äºã
æ³éåºDocker容å¨ï¼å¨å®¹å¨éé¢çæ示符å¤é®å ¥âexitâã
ä½ å¯ä»¥å¯å¨ä¸åå½¢å¼ç容å¨ãæ¯å¦ï¼æ³å¯å¨Fedora容å¨ï¼è¯·æ§è¡ä¸é¢è¿ä¸ªå½ä»¤ï¼
$ docker.io run -i -t fedora /bin/bash
å¦ææ¬å°æ²¡æFedora Dockeræ åæ件ï¼è¯¥å½ä»¤å°±ä¼é¦å èªå¨ä¸è½½æ åæ件ï¼ç¶åå¯å¨Dockerã
å¦æä½ æ³å¯å¨éç¨æ个åè¡ççæ¬ç容å¨ï¼ä¹å¯ä»¥è¿ä¹åãæ¯å¦è¯´ï¼æ³å¯å¨Ubuntu . Dockerï¼è¯·æ§è¡ä¸é¢è¿ä¸ªå½ä»¤ï¼
$ docker.io run -i -t ubuntu:. /bin/bash
容å¨ç½ç»
Docker使ç¨Linuxç½æ¡¥å°å®¹å¨å½¼æ¤äºèèµ·æ¥ï¼å¹¶å°å®ä»¬è¿æ¥å°å¤é¨ç½ç»ãå®è£ äºDockeråï¼ä½ åºè¯¥ä¼çå°é»è®¤æ åµä¸èªå¨ç»å»ºçdocker0 Linuxç½æ¡¥ãä½ å建çæ¯ä¸ªå®¹å¨é½å°è¿æ¥å°docker0ç½æ¡¥æ¥å£ã
èªå®ä¹Linuxç½æ¡¥
å¦æä½ æ³ï¼ä¹å¯ä»¥ä½¿ç¨èªå®ä¹Linuxç½æ¡¥å°è¯¸å®¹å¨äºèèµ·æ¥ã为æ¤ï¼ä½ å¯ä»¥å»ºç«ä¸ä¸ªèªå®ä¹ç½æ¡¥ï¼å¹¶å¯¹å®è¿è¡é ç½®ï¼å¦ä¸æ示ãä½ å¯ä»¥ä¸ºè¯¥ç½æ¡¥åé ä¸ä¸ªåç¬çåç½ï¼å¹¶ä¸ä»åç½ä¸ºDockeråé IPå°åãæä¼ä½¿ç¨.0.0.0/ä½ä¸ºDockeråç½ã
$ sudo apt-get install bridge-utils
$ sudo brctl addbr br0
$ sudo ifconfig br0 .0.0.1 netmask ...0
æ³è®©Docker使ç¨èªå®ä¹ç½æ¡¥ï¼å°â-b=br0âæ·»å å°/etc/default/docker.ioä¸çDOCKER_OPTSåéï¼ç¶åéå¯Dockeræå¡ã
$ sudo service docker.io restart
è³æ¤ï¼ä»»ä½æ°ç容å¨é½ä¼è¿æ¥å°br0ï¼å ¶IPå°åä¼èªå¨ä».0.0.0/æ¥åé ã
å ¶ä»å®å¶
è¿æå¦å¤å ç§æ¹æ³å¯ä»¥å®å¶Dockerçé»è®¤ç½ç»è®¾ç½®ï¼ä¸»è¦æ¯éè¿æ¹å¨/etc/default/docker.ioä¸çDOCKER_OPTSåéæ¥å®ç°ã
â-dns 8.8.8.8 -dns 8.8.4.4âï¼æå®å®¹å¨ä½¿ç¨çDNSæå¡å¨ã
â-icc=falseâï¼è®©è¯¸å®¹å¨å½¼æ¤é离å¼æ¥ã
æ éææ¥
1. è¿è¡docker.ioå½ä»¤æ¶ï¼ä½ ä¼éå°ä¸é¢è¿ä¸ªé误ã
dial unix /var/run/docker.sock: no such file or directoryï¼æ²¡ææ¤ç±»æ件æç®å½ï¼
åºç°è¿ä¸ªé误ï¼å¯è½æ¯ç±äºDockerå®æ¤ç¨åºæ²¡å¨è¿è¡ãæ£æ¥Dockerå®æ¤ç¨åºçç¶æï¼ç¡®ä¿å å¯å¨å®ã
$ sudo service docker.io status
$ sudo service docker.io start
å¦ä½è®¡ç®å®¹å¨çCPU使ç¨å¼
å 为çæ§ç³»ç»è°æ´éè¦ï¼éè¦ä»å®¿ä¸»æºè·å容å¨ç CPU 使ç¨çã
以åå¨ç»å®¹å¨åé CPU èµæºçæ¶åï¼æ¯ç»å®æå® CPU çæ¹å¼ï¼é£å®¿ä¸»åªè¦è®¡ç®ä¸å容å¨ç»å®ç CPU 使ç¨çå³å¯ãä½æ¯æè¿å¯¹ CPU èµæºçåé æ¹å¼è¿è¡äºè°æ´ï¼éè¿ CPU使ç¨æ¶é´ çæ¹å¼å¯¹ CPU 使ç¨çè¿è¡éå¶ãï¼éè¿ CPU使ç¨æ¶é´ éå¶æä¸å°ä¼å¿ï¼å¦å¤åæç« ä»ç»ãï¼
åæ¥çæ¹æ³ä¸åéç¨ãæ¢ç¶ Cgroup å¯ä»¥éè¿ CPU æ¶é´å¯¹ CPU èµæºè¿è¡éå¶ï¼é£å¿ ç¶å¨æ个å°æ¹ä¼ç»è®¡ CPU ç使ç¨æ¶é´ãäºæ¯æå¨ç½ç»ä¸æç´¢äºä¸çªï¼å¤§é¨åçç»æé½æ¯åè¯æå¯ä»¥éè¿ä»¥ä¸å½ä»¤è·å容å¨ç CPU 使ç¨çã
æ¾ç¶ï¼ç°å¨ä¸æ¦è¯´å°å®¹å¨ï¼åºæ¬ä¸é½ä¼è®¤ä¸ºè¯´çæ¯ dockerï¼å ¶å®æç¨çæ¯LXCãä¸è¿ä¸ç®¡ææ ·ï¼è®¡ç®æ¹æ³åºè¯¥æ¯ä¸è´çã
æ¸ç´¢ä¸çªï¼åç°å¨ä»¥ä¸è·¯å¾å°±è½æ¾å°ä¸ä¸ªå®¹å¨ï¼è¿éæ¯LXCï¼ç CPU 使ç¨æ¶é´ï¼æ¶é´åä½æ¯çº³ç§ï¼
å©ç¨è¿ä¸ªæ¶é´ï¼å计ç®å®é ç»è¿çæ¶é´ï¼å°±è½å¾åºå¨ä¸æ®µæ¶é´å ï¼CPUç使ç¨çã
PS. éè¿è¿ä¸ªæ¹æ³ï¼ä¸ä» è½è®¡ç®æ´ä¸ª CPU 使ç¨çï¼è¿å¯ä»¥è®¡ç®åºç¨æ·æåå æ ¸æåå«ä½¿ç¨çæ åµï¼å¨ç¹å®æ åµä¼æ´æå©äºäºè§£åºç¨ç¨åºç使ç¨æ åµãï¼è§ cpuacct.usage_sys å cpuacct.usage_user )
CPU使ç¨æ¶é´å°±æ¯ä¸ä¸èæä¸æå°çcgroupæ件ä¸ç cpuacct.usage æ件éçæ¶é´ã
å½åæ¶é´ï¼ä»¥çº³ç§è®¡ç®ï¼å¯ä»¥éè¿ä»¥ä¸å½æ°è·åï¼
åªè¦ä¸¤ä¸ªæ¶é´ç¹çå½åæ¶é´ç¸åï¼å°±å¯ä»¥å¾å°æ»å ±ç»è¿çæ¶é´äºã
è¿ä¸ªç¨åºçæºç ä¹å¯ä»¥è´´åºæ¥ï¼æéè¦çæåä¹å¯ä»¥å»Githubä¸å¯å éï¼
blogs.com/peterempero...
daemonlinux
linuxfunction函数daemon的作用?linux提供了daemon函数用于创建守护进程,实现原理与上文中介绍的码安是一样的。
#include
intdaemon(intnochdir,码安intnoclose);
1.daemon()函数主要用于希望脱离控制台,以守护进程形式在后台运行的码安通达信经传指标公式源码程序。
2.当nochdir为0时,码安daemon将更改进城的码安根目录为root(“/”)。
3.当noclose为0是码安,daemon将进城的码安STDIN,STDOUT,STDERR都重定向到/dev/null。
daemon的码安实现大致如下:
intdaemon(intnochdir,intnoclose)
{
pid_tpid;
if(!nochdirchdir("/")!=0)//如果nochdir=0,那么改变到"/"根目录
return-1;
if(!noclose)//如果没有noclose标志
{
intfd=open("/dev/null",O_RDWR);
if(fd0)
return-1;
/*重定向标准输入、输出、码安错误到/dev/null,码安fusionapp应用源码
键盘的码安输入将对进程无任何影响,进程的码安输出也不会输出到终端
*/
dup(fd,0);
dup(fd,1);
dup(fd,2);
close(fd);
}
pid=fork();//创建子进程.
if(pid0)//失败
return-1;
if(pid>0)
_exit(0);//返回执行的是父进程,那么父进程退出,让子进程变成真正的孤儿进程.
//创建的daemon子进程执行到这里了
if(setsid()0)//创建新的会话,并使得子进程成为新会话的码安领头进程
return-1;
return0;//成功创建daemon子进程
}
使用实例:
intmain()
{
daemon(1,1);//参数根据需求确定
/*在这里添加你需要在后台做的工作代码*/
}
如何杀死这样的进程:
通过ps+grep找到对应的后台进程,使用kill命令将进程杀死;也可创建shell脚本对进程的码安启动、关闭、c 源码审计重启进行自动管理
docker教程?
docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows机器上,也可以实现虚拟化。
容器是vsto插件源码完全使用沙箱机制,相互之间不会有任何接口。
一个完整的docker有以下几个部分组成:
1.DockerClient客户端
2.DockerDaemon守护进程
3.DockerImage镜像
4.DockerContainer容器
docker是PaaS提供商dotCloud开源的一个基于LXC的高级容器引擎,源代码托管在Github上,基于go语言并遵从Apache2.0协议开源。
docker自年以来非常火热,无论是源码资源修改从github上的代码活跃度,还是Redhat在RHEL6.5中集成对docker的支持,就连Google的ComputeEngine也支持docker在其之上运行。
在Linux环境下如何安装和使用Docker?
Docker从1.版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE
以Centos操作系统安装CE版为例:
一.卸载
1)查看系统中docker-ce安装包
2)卸载docker-ce安装包
3)删除docker的镜像目录文件
rm-rf/var/lib/docker/
4)删除docker的镜像目录文件
rm-rf/var/run/docker/
二.安装
1)配置yum仓库docker-ce镜像源
yum-config-manager--add-repo。你可以找到详细的源码镜像配置在提供的链接中。
安装SSH或启用LXC的SSH功能是必要的,以便能够远程连接。随后,按照官方文档安装docker,以确保正确性。为了加速镜像的下载,需要更改docker的镜像源。
测试镜像下载、查看镜像信息、历史记录和搜索官方库是基本操作。在使用过程中,如果镜像被其他容器依赖,删除前需先停止相关容器。此外,可以临时运行docker实例,同时查看并管理所有容器,以及清理无用的镜像。