±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚcnblogs£¬Ö÷Òª½éÉÜÁË
docker ÈÝÆ÷¼¼ÊõµÄÓ¦Óã¬docker Ïà¹ØµÄÖØÒª¸ÅÄMoby ProjectµÈ¡£ |
|
Docker ºÍÈÝÆ÷¼¼ÊõµÄ·¢Õ¹¿ÉνÊÇÈÕÐÂÔÂÒ죬±¾ÎÄÊÔͼÒÔÈ«¾ÖµÄÊÓ½ÇÀ´ÊáÀíÒ»ÏÂ
docker ĿǰµÄÉú̬Ȧ¡£¼ÈÈ»ÊǸÅÀÀ£¬ËùÒÔ²»»áÉæ¼°¾ßÌåµÄ¼¼Êõϸ½Ú¡£
Docker ×Ô´Ó·¢²¼ÒÔÀ´·¢ÉúÁ˺ܶàµÄ±ä»¯£¬²¢ÇÒÓÐЩ·½ÃæµÄ±ä»¯»¹·Ç³£´ó¡£¶ÔÓÚ¼¼Êõ°®ºÃÕßÀ´Ëµ£¬ÎÒÃÇϲ»¶¿á±ÐÐµĹ¦ÄÜ£¬Ï²»¶¾É¹¦ÄܵĸÄÉÆ¡£µ«¶ÔÓÚÉú²ú»·¾³ÖеÄʹÓÃÕßÀ´Ëµ£¬Æäʵ²»Ì«Ï²»¶ÕâÖÖÆµ·±µÄ±ä»¯£¡²»¹ÜÔõÑù£¬ÎÒÃǶ¼ÓбØÒªÀíÇå
docker Éú̬ϵͳÖеÄÖÚ¶à¸ÅÄî¼°ËüÃÇÖ®¼äµÄ¹ØÏµ£¬ÒÔ¼° docker ×Ôµ®ÉúÖÁ½ñ(2018 Äê)µÄÀï³Ì±®ÐÔʼþ¡£
°Ù»¨Æë·ÅµÄÈÝÆ÷¼¼Êõ
ËäÈ» docker °ÑÈÝÆ÷¼¼ÊõÍÆÏòÁËá۷壬µ«ÈÝÆ÷¼¼ÊõÈ´²»ÊÇ´Ó docker µ®ÉúµÄ¡£Êµ¼ÊÉÏ£¬ÈÝÆ÷¼¼ÊõÁ¬Ð¼¼Êõ¶¼Ëã²»ÉÏ£¬ÒòΪËüµÄµ®ÉúºÍʹÓÃȷʵÓÐЩÄêÍ·ÁË¡£ÏÂÃæµÄÒ»´®Ãû³Æ¿ÏÄÜÓеÄÄ㶼ûÓÐÌý˵¹ý£¬µ«ËüÃǵÄÈ·¶¼ÊÇÈÝÆ÷¼¼ÊõµÄÓ¦Óãº
Chroot Jail
FreeBSD Jails
Linux VServer
Solaris Containers
OpenVZ
Process Containers
LXC
Warden
LMCTFY
Docker
RKT
Chroot Jail
¾ÍÊÇÎÒÃdz£¼ûµÄ chroot ÃüÁîµÄÓ÷¨¡£ËüÔÚ 1979 ÄêµÄʱºò¾Í³öÏÖÁË£¬±»ÈÏΪÊÇ×îÔçµÄÈÝÆ÷»¯¼¼ÊõÖ®Ò»¡£Ëü¿ÉÒÔ°ÑÒ»¸ö½ø³ÌµÄÎļþϵͳ¸ôÀëÆðÀ´¡£
The FreeBSD Jail
Freebsd Jail ʵÏÖÁ˲Ù×÷ϵͳ¼¶±ðµÄÐéÄ⻯£¬ËüÊDzÙ×÷ϵͳ¼¶±ðÐéÄ⻯¼¼ÊõµÄÏÈÇýÖ®Ò»¡£
Linux VServer
ʹÓÃÌí¼Óµ½ Linux Äں˵Äϵͳ¼¶±ðµÄÐéÄ⻯¹¦ÄÜʵÏÖµÄרÓÃÐéÄâ·þÎñÆ÷¡£
Solaris Containers
ËüÒ²ÊDzÙ×÷ϵͳ¼¶±ðµÄÐéÄ⻯¼¼Êõ£¬×¨Îª X86 ºÍ SPARC ϵͳÉè¼Æ¡£Solaris ÈÝÆ÷ÊÇϵͳ×ÊÔ´¿ØÖƺÍͨ¹ý
"ÇøÓò" Ìṩ±ß½ç¸ôÀëµÄ×éºÏ¡£
OpenVZ
OpenVZ ÊÇÒ»ÖÖ Linux ÖвÙ×÷ϵͳ¼¶±ðµÄÐéÄ⻯¼¼Êõ¡£ ËüÔÊÐí´´½¨¶à¸ö°²È«¸ôÀëµÄ Linux
ÈÝÆ÷£¬¼´ VPS¡£
Process Containers
Process ÈÝÆ÷ÓÉ Google µÄ¹¤³Ìʦ¿ª·¢£¬Ò»°ã±»³ÆÎª cgroups¡£
LXC
LXC ÓֽРLinux ÈÝÆ÷£¬ÕâÒ²ÊÇÒ»ÖÖ²Ù×÷ϵͳ¼¶±ðµÄÐéÄ⻯¼¼Êõ£¬ÔÊÐíʹÓõ¥¸ö Linux ÄÚºËÔÚËÞÖ÷»úÉÏÔËÐжà¸ö¶ÀÁ¢µÄϵͳ¡£
Warden
ÔÚ×î³õ½×¶Î£¬Warden ʹÓà LXC ×÷ΪÈÝÆ÷ÔËÐÐʱ¡£ Èç½ñÒѱ» CloudFoundy È¡´ú¡£
LMCTFY
LMCTY ÊÇ Let me contain that for you µÄËõд¡£ËüÊÇ Google
µÄÈÝÆ÷¼¼ÊõÕ»µÄ¿ªÔ´°æ±¾¡£
Google µÄ¹¤³ÌʦһֱÔÚÓë docker µÄ libertainer ÍŶӺÏ×÷£¬²¢½« libertainer
µÄºËÐĸÅÄî½øÐгéÏó²¢ÒÆÖ²µ½´ËÏîÄ¿ÖС£¸ÃÏîÄ¿µÄ½øÕ¹²»Ã÷£¬¹À¼Æ»á±» libcontainer È¡´ú¡£
Docker
Docker ÊÇÒ»¸ö¿ÉÒÔ½«Ó¦ÓóÌÐò¼°ÆäÒÀÀµ´ò°üµ½¼¸ºõ¿ÉÒÔÔÚÈκηþÎñÆ÷ÉÏÔËÐеÄÈÝÆ÷µÄ¹¤¾ß¡£
RKT
RKT ÊÇ Rocket µÄËõд£¬ËüÊÇÒ»¸öרעÓÚ°²È«ºÍ¿ª·Å±ê×¼µÄÓ¦ÓóÌÐòÈÝÆ÷ÒýÇæ¡£
ÕýÈçÎÒÃÇËù¿´µ½µÄ£¬docker ²¢²»ÊǵÚÒ»¸öÈÝÆ÷»¯¼¼Êõ£¬µ«ËüµÄÈ·ÊÇ×îÖªÃûµÄÒ»¸ö¡£Docker
µ®ÉúÓÚ 2013 Ä꣬²¢»ñµÃÁË¿ìËٵķ¢Õ¹£¬ÏÂͼչʾÁ˵±Ç° docker ƽ̨ÖеÄ×é³É²¿·Ö(´ËͼÀ´×Ô»¥ÁªÍø)£º

Docker Á¢ÓÚϵͳ»ù´¡¼Ü¹¹Ö®Éϲ¢ÎªÓ¦ÓóÌÐòÌṩ֧³Å¡£ËüÓɳÆÎª containerd µÄÐÐÒµ±ê×¼ÈÝÆ÷ÔËÐÐʱ×é¼þ£¬³ÆÎª
docker swarm µÄ±¾µØ±àÅŹ¤¾ß£¬ÒÔ¼°¿ªÔ´µÄ docker community °æ±¾ºÍÌṩÉÌÒµ¹ÜÀí·þÎñµÄ
docker enterprise °æ×é³É¡£
Óë docker Ïà¹ØµÄÖØÒª¸ÅÄî
Docker & LXC
Docker µÄµÚÒ»¸öÖ´Ðл·¾³ÊÇ LXC£¬µ«´Ó°æ±¾ 0.9 ¿ªÊ¼ LXC ±» libcontainer
È¡´ú¡£
Docker & libcontainer
Libcontainer Ϊ docker ·â×°ÁË Linux ÌṩµÄ»ù´¡¹¦ÄÜ£¬Èç
cgroups£¬namespaces£¬netlink ºÍ netfilter µÈ£¬ÈçÏÂͼËùʾ(´ËͼÀ´×Ô»¥ÁªÍø)£º

2015 - Docker £¦ runC
2015 Ä꣬docker ·¢²¼ÁË runC£¬Ò»¸öÇáÁ¿¼¶µÄ¿çƽ̨µÄÈÝÆ÷ÔËÐÐʱ¡£ Õâ»ù±¾ÉϾÍÊÇÒ»¸öÃüÁîÐÐС¹¤¾ß£¬¿ÉÒÔÖ±½ÓÀûÓÃ
libcontainer ÔËÐÐÈÝÆ÷£¬¶øÎÞÐèͨ¹ý docker engine¡£runC µÄÄ¿±êÊÇʹ±ê×¼ÈÝÆ÷ÔÚÈκεط½¶¼¿ÉÓá£
Docker & The Open Containers Initiative(OCI)
OCI ÊÇÒ»¸öÇáÁ¿¼¶µÄ¿ª·Åʽ¹ÜÀí¼Ü¹¹£¬ÓÉ docker£¬CoreOS ºÍÈÝÆ÷ÐÐÒµµÄÆäËûÁìµ¼³§ÉÌÓÚ 2015
Ä꽨Á¢¡£Ëüά»¤Ò»Ð©ÏîÄ¿£¬Èç runC £¬»¹ÓÐÈÝÆ÷ÔËÐÐʱ¹æ·¶ºÍ¾µÏñ¹æ·¶¡£OCI µÄÄ¿µÄÊÇÎ§ÈÆÈÝÆ÷ÐÐÒµÖÆ¶¨±ê×¼£¬±ÈÈçʹÓÃ
docker ´´½¨µÄÈÝÆ÷¿ÉÒÔÔÚÈÎºÎÆäËûÈÝÆ÷ÒýÇæÉÏÔËÐС£
2016 - Docker & containerd
2016Ä꣬Docker ·Ö²ðÁË containerd£¬²¢½«Æä¾èÔù¸øÁËÉçÇø¡£½«Õâ¸ö×é¼þ·Ö½âΪһ¸öµ¥¶ÀµÄÏîÄ¿£¬Ê¹µÃ
docker ½«ÈÝÆ÷µÄ¹ÜÀí¹¦ÄÜÒÆ³ö docker µÄºËÐÄÒýÇæ²¢ÒÆÈëÒ»¸öµ¥¶ÀµÄÊØ»¤½ø³Ì(¼´ containerd)¡£
Docker Components
·Ö²ðÍê containerd ºó£¬docker ¸÷×é¼þµÄ¹ØÏµÈçÏÂͼËùʾ(´ËͼÀ´×Ô»¥ÁªÍø)£º

ÖÁ´Ë£¬docker ´ÓÒ»¸öµ¥Ò»µÄÈí¼þÑݱä³ÉÁËÒ»Ì×Ï໥¶ÀÁ¢µÄ×é¼þºÍÏîÄ¿¡£
Docker ÈçºÎÔËÐÐÒ»¸öÈÝÆ÷£¿
1.Docker ÒýÇæ´´½¨ÈÝÆ÷Ó³Ïñ
2.½«ÈÝÆ÷Ó³Ïñ´«µÝ¸ø containerd
3.containerd µ÷ÓÃ containerd-shim
4.containerd-shim ʹÓà runC À´ÔËÐÐÈÝÆ÷
5.containerd-shim ÔÊÐíÔËÐÐʱ(±¾ÀýÖÐΪ runC)ÔÚÆô¶¯ÈÝÆ÷ºóÍ˳ö
¸ÃÄ£ÐÍ´øÀ´µÄ×î´óºÃ´¦ÊÇÔÚÉý¼¶ docker ÒýÇæÊ±²»»áÖжÏÈÝÆ÷µÄÔËÐС£
2017 - ÈÝÆ÷³ÉΪÖ÷Á÷
2017 ÄêÊÇÈÝÆ÷³ÉΪÖ÷Á÷¼¼ÊõµÄÒ»Ä꣬Õâ¾ÍÊÇΪʲô docker ÔÚ Linux Ö®ÍâÖ§³ÖÖÚ¶àÆ½Ì¨µÄÔÒò£¨Docker
for Mac£¬Docker for Windows£¬Docker for AWS£¬GCP µÈ£©¡£
µ±ÈÝÆ÷¼¼Êõ±»´óÖÚ½ÓÊܺó£¬Docker ¹«Ë¾Òâʶµ½ÐèҪеÄÉú²úÄ£ÐÍ£¬Õâ¾ÍÊÇΪʲôËü¿ªÊ¼ Moby ÏîÄ¿¡£
Moby Project
Moby ÏîÄ¿¿ªÆôÁËʵÏÖÐ×÷ºÍÉú²úµÄÐÂÆªÕ¡£ËüÊÇÒ»¸ö¿ªÔ´ÏîÄ¿£¬Ö¼ÔÚÍÆ½øÈí¼þµÄÈÝÆ÷»¯¡£Moby ÏîÄ¿ÌṩÁËÊýÊ®¸öÀָ߻ýľһÑùµÄ×é¼þÒÔ¼°½«ËüÃÇ×é×°³É¶¨ÖƵĻùÓÚÈÝÆ÷µÄϵͳµÄ¿ò¼Ü¡£
Docker Éú²úÄ£ÐÍÏñÈÎºÎÆäËû³£¼ûµÄµ¥¸ö¿ªÔ´ÏîĿһÑù¿ªÊ¼(´ËͼÀ´×Ô»¥ÁªÍø)£º

½ø¶ø½«µ¥¸öÏîÄ¿²ð·ÖΪ²»Í¬µÄ¿ª·Å×é¼þ(´ËͼÀ´×Ô»¥ÁªÍø)£º
È»ºó½ø»¯µ½¿ÉÒÔ¹²ÏíÕâЩ×é¼þÒÔ¼°×é¼þ¼¯ºÏ(assembly)µÄÄ£ÐÍ(´ËͼÀ´×Ô»¥ÁªÍø)£º

×îÖÕ´ïµ½Äܹ»Ìṩ¸ü¶à¹ØÓÚ×é¼þºÍͨÓÃ×é¼þ¼¯ºÏµÄÐ×÷µÄÄ£ÐÍ(´ËͼÀ´×Ô»¥ÁªÍø)£º

ÏÂÃæÎÒÃǾÍÀ´½éÉÜһЩ Moby ÏîÄ¿ÖеÄ×é¼þ¡£
Containerd
Containerd ÊÇ docker »ùÓÚÐÐÒµ±ê×¼´´½¨µÄºËÐÄÈÝÆ÷ÔËÐÐʱ¡£Ëü¿ÉÒÔÓÃ×÷ Linux ºÍ
Windows µÄÊØ»¤½ø³Ì£¬²¢¹ÜÀíÕû¸öÈÝÆ÷ÉúÃüÖÜÆÚ¡£
Linuxkit
Linuxkit ÊÇ Moby ÏîÄ¿ÖеÄÁíÒ»¸ö×é¼þ£¬ËüÊÇΪÈÝÆ÷¹¹½¨°²È«¡¢¿çƽ̨¡¢¾«¼òϵͳµÄ¹¤¾ß¡£Ä¿Ç°ÒѾ֧³ÖµÄ±¾µØ
hypervisor ÓÐ hyper-v ºÍ vmware¡£Ö§³ÖµÄÔÆÆ½Ì¨ÓÐ AWS¡¢Azure µÈ¡£
Infrakit
Infrakit Ò²ÊÇ Moby ÏîÄ¿µÄÒ»²¿·Ö¡£ËüÊÇ´´½¨ºÍ¹ÜÀíÉùÃ÷ʽ¡¢²»¿É±äºÍ×ÔÎÒÐÞ¸´»ù´¡¼Ü¹¹µÄ¹¤¾ß°ü¡£
Infrakit Ö¼ÔÚ×Ô¶¯»¯»ù´¡¼Ü¹¹µÄÉèÖú͹ÜÀí£¬ÒÔÖ§³Ö·Ö²¼Ê½ÏµÍ³ºÍ¸ü¸ß¼¶±ðµÄÈÝÆ÷±àÅÅϵͳ¡£Infrakit
¶ÔÓÚÏñ Docker Swarm ºÍ Kubernetes ÕâÑùµÄ±àÅŹ¤¾ß»ò¿çÔ½ AWS µÈ¹«¹²ÔÆ´´½¨×Ô¶¯Ëõ·ÅȺ¼¯µÄÓÃÀýºÜÓÐÓá£
Libnetwork
Libnetwork ÊÇÓà Go ÓïÑÔʵÏÖµÄÈÝÆ÷ÍøÂç¹ÜÀíÏîÄ¿¡£ËüµÄÄ¿±êÊǶ¨ÒåÒ»¸öÈÝÆ÷ÍøÂçÄ£ÐÍ(CNM)£¬
²¢ÎªÓ¦ÓóÌÐòÌṩһÖµıà³Ì½Ó¿ÚÒÔ¼°ÍøÂç³éÏó¡£ÕâÑù¾Í¿ÉÒÔÂú×ãÈÝÆ÷ÍøÂçµÄ "¿É×éºÏ"
ÐèÇó¡£
Docker & Docker Swarm
Docker Swarm ÊÇÒ»¸öÔÚ docker ÒýÇæÖй¹½¨µÄ±àÅŹ¤¾ß¡£´Ó
docker 1.12 ¿ªÊ¼Ëü¾Í×÷Ϊһ¸ö¶ÀÁ¢µÄ¹¤¾ß±»ÔÉú°üº¬ÔÚ docker engine ÖС£ÎÒÃÇ¿ÉÒÔʹÓÃ
docker cli ͨ¹ý docker swarm ´´½¨Èº¼¯£¬²¢²¿ÊðºÍ¹ÜÀíÓ¦ÓóÌÐòºÍ·þÎñ¡£ÏÂͼÃèÊöÁË
docker swarm ÔÚ docker ÌåϵÖеÄ×÷ÓÃ(´ËͼÀ´×Ô»¥ÁªÍø)£º

Docker£¦Kubernetes
ÔÚ docker swarm Óë kubernetes µÄ¾ºÕùÖУ¬ÏÔÈ»ÊÇ
kubernetes Õ¼¾ÝÁËÓÅÊÆ¡£ËùÒÔ docker ½ô¼±µôÍ·£¬¿ªÊ¼ÔÉúµÄÖ§³ÖÓë kubernetes
µÄ¼¯³É¡£Õâ¿ÉÊÇ 2017 ÄêÈÝÆ÷½çµÄÒ»´óÐÂÎŰ¡£¡ÖÁ´Ë£¬docker Óû§ºÍ¿ª·¢ÈËÔ±¿ÉÒÔ×ÔÓɵØÑ¡ÔñʹÓÃ
kubernetes »òÊÇ swarm Ö´ÐÐÈÝÆ÷µÄ±àÅŹ¤×÷¡£ÎÒÃÇ¿ÉÒÔÈÏΪ docker Óë kubernetes
ÁªÒöÁË(´ËͼÀ´×Ô»¥ÁªÍø)£º

еÄÖ§³Ö kubernetes ¼¯³ÉµÄ docker °æ±¾½«ÔÊÐíÓû§°ÑËûÃǵÄ
docker compose Ó¦ÓóÌÐò²¿ÊðΪ kubernetes ±¾µØ pod ºÍ·þÎñ¡£Kubernetes
ÊÇÒ»¿î·Ç³£Ç¿´óÇÒÖð½¥±»´óÖÚÈϿɵı¾µØ±àÅŹ¤¾ß(´ËͼÀ´×Ô»¥ÁªÍø)£º

Ï£Íû´ó¼ÒûÓб»ÎÄÖÐÖÚ¶àµÄÃû³ÆºÍ¸ÅÄî¸ãºýÍ¿£¬ÈÃÎÒÃÇÒÔÏÂͼÀ´½áÊø±¾ÎÄ£¬ËüչʾÁË´Ó
2013 Äêµ½ 2017 Äê´Ó docker hub ÀÈ¡¾µÏñ´ÎÊýµÄÇ÷ÊÆ£º

|