**æ¬æåªæ¯å¯¹ Docker çæ¦å¿µåäºè¾ä¸ºè¯¦ç»çä»ç»ï¼å¹¶ä¸æ¶åä¸äºå Docker ç¯å¢çå®è£ 以å Docker çä¸äºå¸¸è§æä½åå½ä»¤ã** ## ä¸ è®¤è¯å®¹å¨ **Docker æ¯ä¸çé¢å ç软件容å¨å¹³å°**ï¼æä»¥æ³è¦ææ Docker çæ¦å¿µæä»¬å¿ é¡»å ä»å®¹å¨å¼å§è¯´èµ·ã ### 1.1 ä»ä¹æ¯å®¹å¨? #### å æ¥çç容å¨è¾ä¸ºå®æ¹çè§£é **ä¸å¥è¯æ¦æ¬å®¹å¨ï¼å®¹å¨å°±æ¯å°è½¯ä»¶æå ææ åååå ï¼ä»¥ç¨äºå¼åã交ä»åé¨ç½²ã** - **容å¨éåæ¯è½»éçã坿§è¡çç¬ç«è½¯ä»¶å ** ï¼å å«è½¯ä»¶è¿è¡æéçææå 容ï¼ä»£ç ãè¿è¡æ¶ç¯å¢ãç³»ç»å·¥å ·ãç³»ç»åºå设置ã - **容å¨å软件éç¨äºåºäº Linux å Windows çåºç¨ï¼å¨ä»»ä½ç¯å¢ä¸é½è½å¤å§ç»å¦ä¸å°è¿è¡ã** - **容å¨èµäºäºè½¯ä»¶ç¬ç«æ§**ãï¼ä½¿å ¶å åå¤å¨ç¯å¢å·®å¼ï¼ä¾å¦ï¼å¼åå颿¼ç¯å¢çå·®å¼ï¼çå½±åï¼ä»èæå©äºåå°å¢éé´å¨ç¸ååºç¡è®¾æ½ä¸è¿è¡ä¸å软件æ¶çå²çªã #### 忥çç容å¨è¾ä¸ºéä¿çè§£é **妿éè¦éä¿çæè¿°å®¹å¨çè¯ï¼æè§å¾å®¹å¨å°±æ¯ä¸ä¸ªåæ¾ä¸è¥¿çå°æ¹ï¼å°±å书å å¯ä»¥è£ åç§æå ·ãè¡£æå¯ä»¥æ¾åç§è¡£æãéæ¶å¯ä»¥æ¾åç§éå䏿 ·ãæä»¬ç°å¨æè¯´ç容å¨åæ¾çä¸è¥¿å¯è½æ´ååäºåºç¨æ¯å¦ç½ç«ãç¨åºçè³æ¯ç³»ç»ç¯å¢ã**  ### 1.2 å¾è§£ç©çæº,èææºä¸å®¹å¨ å ³äºèææºä¸å®¹å¨ç对æ¯å¨åé¢ä¼è¯¦ç»ä»ç»å°ï¼è¿éåªæ¯éè¿ç½ä¸çå¾çå æ·±å¤§å®¶å¯¹äºç©çæºãèææºä¸å®¹å¨è¿ä¸è ççè§£(ä¸é¢çå¾çæ¥æºä¸ç½ç»)ã **ç©çæº**  **èææºï¼**  **容å¨ï¼**  éè¿ä¸é¢è¿ä¸å¼ æ½è±¡å¾ï¼æä»¬å¯ä»¥å¤§æ¦å¯ä»¥éè¿ç±»æ¯æ¦æ¬åºï¼ **容å¨èæåçæ¯æä½ç³»ç»è䏿¯ç¡¬ä»¶ï¼å®¹å¨ä¹é´æ¯å ±äº«åä¸å¥æä½ç³»ç»èµæºçãèææºææ¯æ¯èæåºä¸å¥ç¡¬ä»¶åï¼å¨å ¶ä¸è¿è¡ä¸ä¸ªå®æ´æä½ç³»ç»ãå æ¤å®¹å¨çé离级å«ä¼ç¨ä½ä¸äºã** --- **ç¸ä¿¡éè¿ä¸é¢çè§£é大家对äºå®¹å¨è¿ä¸ªæ¢éçåçæçæ¦å¿µæäºä¸ä¸ªåæ¥ç认è¯ï¼ä¸é¢æä»¬å°±æ¥è°è° Docker çä¸äºæ¦å¿µã** ## äº åæ¥è°è° Docker çä¸äºæ¦å¿µ  ### 2.1 ä»ä¹æ¯ Docker? 说å®è¯å ³äº Docker æ¯ä»ä¹å¹¶å¤ªå¥½è¯´ï¼ä¸é¢æéè¿åç¹åä½ è¯´æ Docker å°åºæ¯ä¸ªä»ä¹ä¸è¥¿ã - **Docker æ¯ä¸çé¢å ç软件容å¨å¹³å°ã** - **Docker** ä½¿ç¨ Google å ¬å¸æ¨åºç **Go è¯è¨** è¿è¡å¼åå®ç°ï¼åºäº **Linux å æ ¸** æä¾ç CGroup åè½å name space æ¥å®ç°çï¼ä»¥å AUFS ç±»ç **UnionFS** çææ¯ï¼**对è¿ç¨è¿è¡å°è£ é离ï¼å±äºæä½ç³»ç»å±é¢çèæåææ¯ã** ç±äºé离çè¿ç¨ç¬ç«äºå®¿ä¸»åå ¶å®çé离çè¿ç¨ï¼å æ¤ä¹ç§°å ¶ä¸ºå®¹å¨ã - **Docker è½å¤èªå¨æ§è¡é夿§ä»»å¡ï¼ä¾å¦æå»ºåé ç½®å¼åç¯å¢ï¼ä»èè§£æ¾äºå¼å人å以便ä»ä»¬ä¸æ³¨å¨çæ£éè¦çäºæ ä¸ï¼æå»ºæ°åºç软件ã** - **ç¨æ·å¯ä»¥æ¹ä¾¿å°å建å使ç¨å®¹å¨ï¼æèªå·±çåºç¨æ¾å ¥å®¹å¨ã容å¨è¿å¯ä»¥è¿è¡çæ¬ç®¡çãå¤å¶ãå享ãä¿®æ¹ï¼å°±åç®¡çæ®éç代ç 䏿 ·ã**  ### 2.2 Docker ææ³ - **éè£ ç®±** - **æ ååï¼** â è¿è¾æ¹å¼ â¡ å卿¹å¼ ⢠API æ¥å£ - **é离** ### 2.3 Docker 容å¨çç¹ç¹ - #### è½»é å¨ä¸å°æºå¨ä¸è¿è¡çå¤ä¸ª Docker 容å¨å¯ä»¥å ±äº«è¿å°æºå¨çæä½ç³»ç»å æ ¸ï¼å®ä»¬è½å¤è¿ éå¯å¨ï¼åªéå ç¨å¾å°ç计ç®åå åèµæºãé忝éè¿æä»¶ç³»ç»å±è¿è¡æé çï¼å¹¶å ±äº«ä¸äºå ¬å ±æä»¶ãè¿æ ·å°±è½å°½ééä½ç£çç¨éï¼å¹¶è½æ´å¿«å°ä¸è½½éåã - #### æ å Docker 容å¨åºäºå¼æ¾å¼æ åï¼è½å¤å¨ææä¸»æµ Linux çæ¬ãMicrosoft Windows 以åå æ¬ VMãè£¸æºæå¡å¨åäºå¨å çä»»ä½åºç¡è®¾æ½ä¸è¿è¡ã - #### å®å ¨ Docker èµäºåºç¨çé离æ§ä¸ä» éäºå½¼æ¤é离ï¼è¿ç¬ç«äºåºå±çåºç¡è®¾æ½ãDocker é»è®¤æä¾æå¼ºçé离ï¼å æ¤åºç¨åºç°é®é¢ï¼ä¹åªæ¯å个容å¨çé®é¢ï¼èä¸ä¼æ³¢åå°æ´å°æºå¨ã ### 2.4 为ä»ä¹è¦ç¨ Docker ? - **Docker çéåæä¾äºé¤å æ ¸å¤å®æ´çè¿è¡æ¶ç¯å¢ï¼ç¡®ä¿äºåºç¨è¿è¡ç¯å¢ä¸è´æ§ï¼ä»èä¸ä¼ååºç° âè¿æ®µä»£ç 卿æºå¨ä¸æ²¡é®é¢åâ è¿ç±»é®é¢ï¼ââä¸è´çè¿è¡ç¯å¢** - **å¯ä»¥åå°ç§çº§ãçè³æ¯«ç§çº§çå¯å¨æ¶é´ã大大çè约äºå¼åãæµè¯ãé¨ç½²çæ¶é´ãââæ´å¿«éçå¯å¨æ¶é´** - **é¿å å ¬ç¨çæå¡å¨ï¼èµæºä¼å®¹æåå°å ¶ä»ç¨æ·çå½±åãââé离æ§** - **åäºå¤çéä¸çåçæå¡å¨ä½¿ç¨ååï¼ââå¼¹æ§ä¼¸ç¼©ï¼å¿«éæ©å±** - **å¯ä»¥å¾è½»æçå°å¨ä¸ä¸ªå¹³å°ä¸è¿è¡çåºç¨ï¼è¿ç§»å°å¦ä¸ä¸ªå¹³å°ä¸ï¼èä¸ç¨æ å¿è¿è¡ç¯å¢çåå导è´åºç¨æ æ³æ£å¸¸è¿è¡çæ åµãââè¿ç§»æ¹ä¾¿** - **ä½¿ç¨ Docker å¯ä»¥éè¿å®å¶åºç¨é忥å®ç°æç»éæãæç»äº¤ä»ãé¨ç½²ãââæç»äº¤ä»åé¨ç½²** --- ## ä¸ å®¹å¨ VS èææº **æ¯å½è¯´èµ·å®¹å¨ï¼æä»¬ä¸å¾ä¸å°å ¶ä¸èææºåä¸ä¸ªæ¯è¾ãå°±æèè¨ï¼å¯¹äºä¸¤è æ æè°è°ä¼å代è°ï¼èæ¯ä¸¤è å¯ä»¥åè°å ±åã** ç®åæ¥è¯´ï¼ **容å¨åèææºå ·æç¸ä¼¼çèµæºé离ååé ä¼å¿ï¼ä½åè½ææä¸åï¼å 为容å¨èæåçæ¯æä½ç³»ç»ï¼è䏿¯ç¡¬ä»¶ï¼å æ¤å®¹å¨æ´å®¹æç§»æ¤ï¼æç乿´é«ã** ### 3.1 两è 对æ¯å¾ ä¼ ç»èææºææ¯æ¯èæåºä¸å¥ç¡¬ä»¶åï¼å¨å ¶ä¸è¿è¡ä¸ä¸ªå®æ´æä½ç³»ç»ï¼å¨è¯¥ç³»ç»ä¸åè¿è¡æéåºç¨è¿ç¨ï¼è容å¨å çåºç¨è¿ç¨ç´æ¥è¿è¡äºå®¿ä¸»çå æ ¸ï¼å®¹å¨å 没æèªå·±çå æ ¸ï¼èä¸ä¹æ²¡æè¿è¡ç¡¬ä»¶èæãå æ¤å®¹å¨è¦æ¯ä¼ ç»èææºæ´ä¸ºè½»ä¾¿.  ### 3.2 容å¨ä¸èææºæ»ç»  - **容卿¯ä¸ä¸ªåºç¨å±æ½è±¡ï¼ç¨äºå°ä»£ç åä¾èµèµæºæå å¨ä¸èµ·ã** **å¤ä¸ªå®¹å¨å¯ä»¥å¨åä¸å°æºå¨ä¸è¿è¡ï¼å ±äº«æä½ç³»ç»å æ ¸ï¼ä½åèªä½ä¸ºç¬ç«çè¿ç¨å¨ç¨æ·ç©ºé´ä¸è¿è¡** ãä¸èææºç¸æ¯ï¼ **容å¨å ç¨ç空é´è¾å°**ï¼å®¹å¨éå大å°éå¸¸åªæå åå ï¼ï¼**ç¬é´å°±è½å®æå¯å¨** ã - **èææº (VM) æ¯ä¸ä¸ªç©çç¡¬ä»¶å±æ½è±¡ï¼ç¨äºå°ä¸å°æå¡å¨åæå¤å°æå¡å¨ã** 管çç¨åºå 许å¤ä¸ª VM å¨ä¸å°æºå¨ä¸è¿è¡ãæ¯ä¸ª VM é½å å«ä¸æ´å¥æä½ç³»ç»ãä¸ä¸ªæå¤ä¸ªåºç¨ãå¿ è¦çäºè¿å¶æä»¶ååºèµæºï¼å æ¤ **å ç¨å¤§é空é´** ãèä¸ VM **å¯å¨ä¹ååç¼æ ¢** ã éè¿ Docker å®ç½ï¼æä»¬ç¥éäºè¿ä¹å¤ Docker çä¼å¿ï¼ä½æ¯å¤§å®¶ä¹æ²¡æå¿ è¦å®å ¨å¦å®èææºææ¯ï¼å ä¸ºä¸¤è æä¸åç使ç¨åºæ¯ã**èææºæ´æ é¿äºå½»åºé离æ´ä¸ªè¿è¡ç¯å¢**ãä¾å¦ï¼äºæå¡æä¾åé常éç¨èææºææ¯é离ä¸åçç¨æ·ãè **Docker é常ç¨äºé离ä¸åçåºç¨** ï¼ä¾å¦å端ï¼åç«¯ä»¥åæ°æ®åºã ### 3.3 容å¨ä¸èææºä¸¤è æ¯å¯ä»¥å ±åç å°±æèè¨ï¼å¯¹äºä¸¤è æ æè°è°ä¼å代è°ï¼èæ¯ä¸¤è å¯ä»¥åè°å ±åã  --- ## å Docker åºæ¬æ¦å¿µ **Docker 䏿é常éè¦çä¸ä¸ªåºæ¬æ¦å¿µï¼çè§£äºè¿ä¸ä¸ªæ¦å¿µï¼å°±çè§£äº Docker çæ´ä¸ªçå½å¨æã** - **éåï¼Imageï¼** - **容å¨ï¼Containerï¼** - **ä»åºï¼Repositoryï¼** çè§£äºè¿ä¸ä¸ªæ¦å¿µï¼å°±çè§£äº Docker çæ´ä¸ªçå½å¨æ  ### 4.1 éå(Image):ä¸ä¸ªç¹æ®çæä»¶ç³»ç» **æä½ç³»ç»åä¸ºå æ ¸åç¨æ·ç©ºé´**ãå¯¹äº Linux èè¨ï¼å æ ¸å¯å¨åï¼ä¼æè½½ root æä»¶ç³»ç»ä¸ºå ¶æä¾ç¨æ·ç©ºé´æ¯æãè Docker éåï¼Imageï¼ï¼å°±ç¸å½äºæ¯ä¸ä¸ª root æä»¶ç³»ç»ã **Docker é忝ä¸ä¸ªç¹æ®çæä»¶ç³»ç»ï¼é¤äºæä¾å®¹å¨è¿è¡æ¶æéçç¨åºãåºãèµæºãé ç½®çæä»¶å¤ï¼è¿å å«äºä¸äºä¸ºè¿è¡æ¶åå¤çä¸äºé ç½®åæ°ï¼å¦å¿åå·ãç¯å¢åéãç¨æ·çï¼ã** éåä¸å å«ä»»ä½å¨ææ°æ®ï¼å ¶å å®¹å¨æå»ºä¹åä¹ä¸ä¼è¢«æ¹åã Docker 设计æ¶ï¼å°±å åå©ç¨ **Union FS**çææ¯ï¼å°å ¶è®¾è®¡ä¸º **åå±åå¨çæ¶æ** ã éåå®é æ¯ç±å¤å±æä»¶ç³»ç»èåç»æã **éåæå»ºæ¶ï¼ä¼ä¸å±å±æå»ºï¼åä¸å±æ¯åä¸å±çåºç¡ãæ¯ä¸å±æå»ºå®å°±ä¸ä¼ååçæ¹åï¼åä¸å±ä¸ç任使¹ååªåçå¨èªå·±è¿ä¸å±ã**ãæ¯å¦ï¼å é¤åä¸å±æä»¶çæä½ï¼å®é 䏿¯ççå é¤åä¸å±çæä»¶ï¼èæ¯ä» å¨å½å屿 记为该æä»¶å·²å é¤ã卿ç»å®¹å¨è¿è¡çæ¶åï¼è½ç¶ä¸ä¼çå°è¿ä¸ªæä»¶ï¼ä½æ¯å®é ä¸è¯¥æä»¶ä¼ä¸ç´è·ééåãå æ¤ï¼å¨æå»ºéåçæ¶åï¼éè¦é¢å¤å°å¿ï¼æ¯ä¸å±å°½éåªå å«è¯¥å±éè¦æ·»å çä¸è¥¿ï¼ä»»ä½é¢å¤çä¸è¥¿åºè¯¥å¨è¯¥å±æå»ºç»æåæ¸ çæã åå±åå¨çç¹å¾è¿ä½¿å¾éåçå¤ç¨ãå®å¶åçæ´ä¸ºå®¹æãçè³å¯ä»¥ç¨ä¹åæå»ºå¥½çéåä½ä¸ºåºç¡å±ï¼ç¶åè¿ä¸æ¥æ·»å æ°çå±ï¼ä»¥å®å¶èªå·±æéçå å®¹ï¼æå»ºæ°çéåã ### 4.2 容å¨(Container):éåè¿è¡æ¶çå®ä½ éåï¼Imageï¼å容å¨ï¼Containerï¼çå ³ç³»ï¼å°±åæ¯é¢å对象ç¨åºè®¾è®¡ä¸ç ç±» å å®ä¾ 䏿 ·ï¼é忝éæçå®ä¹ï¼**容卿¯éåè¿è¡æ¶çå®ä½ã容å¨å¯ä»¥è¢«å建ãå¯å¨ã忢ãå é¤ãæåç** ã **容å¨çå®è´¨æ¯è¿ç¨ï¼ä½ä¸ç´æ¥å¨å®¿ä¸»æ§è¡çè¿ç¨ä¸åï¼å®¹å¨è¿ç¨è¿è¡äºå±äºèªå·±çç¬ç«ç å½å空é´ãåé¢è®²è¿éå使ç¨çæ¯åå±åå¨ï¼å®¹å¨ä¹æ¯å¦æ¤ã** **容å¨åå¨å±ççå卿å容å¨ä¸æ ·ï¼å®¹å¨æ¶äº¡æ¶ï¼å®¹å¨åå¨å±ä¹é乿¶äº¡ãå æ¤ï¼ä»»ä½ä¿åäºå®¹å¨åå¨å±çä¿¡æ¯é½ä¼é容å¨å é¤è丢失ã** æç § Docker æä½³å®è·µçè¦æ±ï¼**容å¨ä¸åºè¯¥åå ¶åå¨å±å åå ¥ä»»ä½æ°æ®** ï¼å®¹å¨åå¨å±è¦ä¿ææ ç¶æåã**ææçæä»¶åå ¥æä½ï¼é½åºè¯¥ä½¿ç¨æ°æ®å·ï¼Volumeï¼ãæè ç»å®å®¿ä¸»ç®å½**ï¼å¨è¿äºä½ç½®ç读åä¼è·³è¿å®¹å¨åå¨å±ï¼ç´æ¥å¯¹å®¿ä¸»(æç½ç»åå¨)åç读åï¼å ¶æ§è½åç¨³å®æ§æ´é«ãæ°æ®å·ççå卿ç¬ç«äºå®¹å¨ï¼å®¹å¨æ¶äº¡ï¼æ°æ®å·ä¸ä¼æ¶äº¡ãå æ¤ï¼ **ä½¿ç¨æ°æ®å·åï¼å®¹å¨å¯ä»¥éæå é¤ãéæ° run ï¼æ°æ®å´ä¸ä¼ä¸¢å¤±ã** ### 4.3 ä»åº(Repository):éä¸åæ¾éåæä»¶çå°æ¹ éåæå»ºå®æåï¼å¯ä»¥å¾å®¹æçå¨å½å宿主ä¸è¿è¡ï¼ä½æ¯ï¼ **妿éè¦å¨å ¶å®æå¡å¨ä¸ä½¿ç¨è¿ä¸ªéåï¼æä»¬å°±éè¦ä¸ä¸ªéä¸çåå¨ãååéåçæå¡ï¼Docker Registry å°±æ¯è¿æ ·çæå¡ã** ä¸ä¸ª Docker Registry ä¸å¯ä»¥å å«å¤ä¸ªä»åºï¼Repositoryï¼ï¼æ¯ä¸ªä»åºå¯ä»¥å å«å¤ä¸ªæ ç¾ï¼Tagï¼ï¼æ¯ä¸ªæ ç¾å¯¹åºä¸ä¸ªéåãæä»¥è¯´ï¼**éåä»åºæ¯ Docker ç¨æ¥éä¸åæ¾éåæä»¶çå°æ¹ç±»ä¼¼äºæä»¬ä¹å常ç¨ç代ç ä»åºã** é常ï¼**ä¸ä¸ªä»åºä¼å å«åä¸ä¸ªè½¯ä»¶ä¸åçæ¬çéå**ï¼è**æ ç¾å°±å¸¸ç¨äºå¯¹åºè¯¥è½¯ä»¶çåä¸ªçæ¬** ãæä»¬å¯ä»¥éè¿`<ä»åºå>:<æ ç¾>`çæ ¼å¼æ¥æå®å ·ä½æ¯è¿ä¸ªè½¯ä»¶åªä¸ªçæ¬çéåã妿ä¸ç»åºæ ç¾ï¼å°ä»¥ latest ä½ä¸ºé»è®¤æ ç¾.ã **è¿éè¡¥å ä¸ä¸ Docker Registry å ¬å¼æå¡åç§æ Docker Registry çæ¦å¿µï¼** **Docker Registry å ¬å¼æå¡** æ¯å¼æ¾ç»ç¨æ·ä½¿ç¨ãå è®¸ç¨æ·ç®¡çéåç Registry æå¡ãä¸è¬è¿ç±»å ¬å¼æå¡å è®¸ç¨æ·å è´¹ä¸ä¼ ãä¸è½½å ¬å¼çéåï¼å¹¶å¯è½æä¾æ¶è´¹æå¡ä¾ç¨æ·ç®¡çç§æéåã æå¸¸ä½¿ç¨ç Registry å ¬å¼æå¡æ¯å®æ¹ç **Docker Hub** ï¼è¿ä¹æ¯é»è®¤ç Registryï¼å¹¶æ¥æå¤§éçé«è´¨éç宿¹éåï¼ç½å为ï¼[https://hub.docker.com/](https://hub.docker.com/ "https://hub.docker.com/") ã宿¹æ¯è¿æ ·ä»ç» Docker Hub çï¼ > Docker Hub æ¯ Docker 宿¹æä¾çä¸é¡¹æå¡ï¼ç¨äºä¸æ¨çå¢éæ¥æ¾åå ±äº«å®¹å¨éåã æ¯å¦æä»¬æ³è¦æç´¢èªå·±æ³è¦çéåï¼  å¨ Docker Hub çæç´¢ç»æä¸ï¼æå é¡¹å ³é®çä¿¡æ¯æå©äºæä»¬éæ©åéçéåï¼ - **OFFICIAL Image** ï¼ä»£è¡¨éå为 Docker 宿¹æä¾åç»´æ¤ï¼ç¸å¯¹æ¥è¯´ç¨³å®æ§åå®å ¨æ§è¾é«ã - **Stars** ï¼åç¹èµå·®ä¸å¤çææï¼ç±»ä¼¼ GitHub ç Starã - **Dowloads** ï¼ä»£è¡¨éå被æåçæ¬¡æ°ï¼åºæ¬ä¸è½å¤è¡¨ç¤ºéå被使ç¨çé¢åº¦ã å½ç¶ï¼é¤äºç´æ¥éè¿ Docker Hub ç½ç«æç´¢éåè¿ç§æ¹å¼å¤ï¼æä»¬è¿å¯ä»¥éè¿ `docker search` è¿ä¸ªå½ä»¤æç´¢ Docker Hub ä¸çéåï¼æç´¢çç»ææ¯ä¸è´çã ```bash â ~ docker search mysql NAME DESCRIPTION STARS OFFICIAL AUTOMATED mysql MySQL is a widely used, open-source relation⦠8763 [OK] mariadb MariaDB is a community-developed fork of MyS⦠3073 [OK] mysql/mysql-server Optimized MySQL Server Docker images. Create⦠650 [OK] ``` å¨å½å 访é®**Docker Hub** å¯è½ä¼æ¯è¾æ ¢å½å 乿ä¸äºäºæå¡åæä¾ç±»ä¼¼äº Docker Hub çå ¬å¼æå¡ãæ¯å¦ [æ¶éäºéååº](https://hub.tenxcloud.com/ "æ¶éäºéååº")ã[ç½æäºéåæå¡](https://www.163yun.com/product/repo "ç½æäºéåæå¡")ã[DaoCloud éåå¸åº](https://www.daocloud.io/ "DaoCloud éåå¸åº")ã[é¿éäºéååº](https://www.aliyun.com/product/containerservice?utm_content=se_1292836 "é¿éäºéååº")çã é¤äºä½¿ç¨å ¬å¼æå¡å¤ï¼ç¨æ·è¿å¯ä»¥å¨ **æ¬å°æå»ºç§æ Docker Registry** ãDocker 宿¹æä¾äº Docker Registry éåï¼å¯ä»¥ç´æ¥ä½¿ç¨åä¸ºç§æ Registry æå¡ã弿ºç Docker Registry éååªæä¾äº Docker Registry API çæå¡ç«¯å®ç°ï¼è¶³ä»¥æ¯æ docker å½ä»¤ï¼ä¸å½±å使ç¨ãä½ä¸å å«å¾å½¢çé¢ï¼ä»¥åéåç»´æ¤ãç¨æ·ç®¡çãè®¿é®æ§å¶çé«çº§åè½ã --- ## äº å¸¸è§å½ä»¤ ### 5.1 åºæ¬å½ä»¤ ```bash docker version # æ¥çdockerçæ¬ docker images # æ¥çææå·²ä¸è½½éåï¼çä»·äºï¼docker image ls å½ä»¤ docker container ls # æ¥çææå®¹å¨ docker ps #æ¥çæ£å¨è¿è¡çå®¹å¨ docker image prune # æ¸ ç临æ¶çãæ²¡æè¢«ä½¿ç¨çéåæä»¶ã-a, --all: å é¤æææ²¡æç¨çéåï¼èä¸ä» ä» æ¯ä¸´æ¶æä»¶ï¼ ``` ### 5.2 æåéå ```bash docker search mysql # æ¥çmysqlç¸å ³éå docker pull mysql:5.7 # æåmysqléå docker image ls # æ¥çææå·²ä¸è½½éå ``` ### 5.3 å é¤éå æ¯å¦æä»¬è¦å 餿们ä¸è½½ç mysql éåã éè¿ `docker rmi [image]` ï¼çä»·äº`docker image rm [image]`ï¼å é¤éåä¹åé¦å è¦ç¡®ä¿è¿ä¸ªéåæ²¡æè¢«å®¹å¨å¼ç¨ï¼å¯ä»¥éè¿æ ç¾åç§°æè éå IDå é¤ï¼ãéè¿æä»¬åé¢è®²ç` docker ps`å½ä»¤å³å¯æ¥çã ```shell â ~ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c4cd691d9f80 mysql:5.7 "docker-entrypoint.sâ¦" 7 weeks ago Up 12 days 0.0.0.0:3306->3306/tcp, 33060/tcp mysql ``` å¯ä»¥çå° mysql æ£å¨è¢« id 为 c4cd691d9f80 ç容å¨å¼ç¨ï¼æä»¬éè¦é¦å éè¿ `docker stop c4cd691d9f80` æè `docker stop mysql`æåè¿ä¸ªå®¹å¨ã ç¶åæ¥ç mysql éåç id ```shell â ~ docker images REPOSITORY TAG IMAGE ID CREATED SIZE mysql 5.7 f6509bac4980 3 months ago 373MB ``` éè¿ IMAGE ID æè REPOSITORY ååå³å¯å é¤ ```shell docker rmi f6509bac4980 # æè docker rmim mysql ``` ## å Build Ship and Run **Docker çæ¦å¿µä»¥å常è§å½ä»¤åºæ¬ä¸å·²ç»è®²å®ï¼æä»¬åæ¥è°è°ï¼Build, Ship, and Runã** å¦æä½ æç´¢ Docker å®ç½ï¼ä¼åç°å¦ä¸çåæ ·ï¼**âDocker - Build, Ship, and Run Any App, Anywhereâ**ãé£ä¹ Build, Ship, and Run å°åºæ¯å¨å¹²ä»ä¹å¢ï¼  - **Buildï¼æå»ºéåï¼** ï¼ éå就忝éè£ ç®±å æ¬æä»¶ä»¥åè¿è¡ç¯å¢ççèµæºã - **Shipï¼è¿è¾éåï¼** ï¼ä¸»æºåä»åºé´è¿è¾ï¼è¿éçä»åºå°±åæ¯è¶ 级ç 头䏿 ·ã - **Run ï¼è¿è¡éåï¼** ï¼è¿è¡çéåå°±æ¯ä¸ä¸ªå®¹å¨ï¼å®¹å¨å°±æ¯è¿è¡ç¨åºçå°æ¹ã **Docker è¿è¡è¿ç¨ä¹å°±æ¯å»ä»åºæéåæå°æ¬å°ï¼ç¶åç¨ä¸æ¡å½ä»¤æéåè¿è¡èµ·æ¥åæå®¹å¨ãæä»¥ï¼æä»¬ä¹å¸¸å¸¸å° Docker 称为ç 头工人æç å¤´è£ å¸å·¥ï¼è¿å Docker çä¸æç¿»è¯æ¬è¿å·¥äººå¦åºä¸è¾ã** ## ä¸ ç®åäºè§£ä¸ä¸ Docker åºå±åç ### 7.1 èæåææ¯ é¦å ï¼Docker **容å¨èæå**ææ¯ä¸ºåºç¡ç软件ï¼é£ä¹ä»ä¹æ¯èæåææ¯å¢ï¼ ç®åç¹æ¥è¯´ï¼èæåææ¯å¯ä»¥è¿æ ·å®ä¹ï¼ > èæåææ¯æ¯ä¸ç§èµæºç®¡çææ¯ï¼æ¯å°è®¡ç®æºçåç§[å®ä½èµæº](https://zh.wikipedia.org/wiki/è³æº_(è¨ç®æ©ç§å¸ "å®ä½èµæº"))ï¼[CPU](https://zh.wikipedia.org/wiki/CPU "CPU")ã[å å](https://zh.wikipedia.org/wiki/å å "å å")ã[ç£ç空é´](https://zh.wikipedia.org/wiki/ç£çç©ºé´ "ç£ç空é´")ã[ç½ç»éé å¨](https://zh.wikipedia.org/wiki/網路é©é å¨ "ç½ç»éé å¨")çï¼ï¼äºä»¥æ½è±¡ã转æ¢ååç°åºæ¥å¹¶å¯ä¾åå²ãç»å为ä¸ä¸ªæå¤ä¸ªçµèé ç½®ç¯å¢ãç±æ¤ï¼æç ´å®ä½ç»æé´çä¸å¯åå²çéç¢ï¼ä½¿ç¨æ·å¯ä»¥æ¯åæ¬çé ç½®æ´å¥½çæ¹å¼æ¥åºç¨è¿äºçµèç¡¬ä»¶èµæºãè¿äºèµæºçæ°èæé¨åæ¯ä¸åç°æèµæºçæ¶è®¾æ¹å¼ï¼å°åæç©çé ç½®æéå¶ãä¸è¬ææçèæåèµæºå æ¬è®¡ç®è½ååæ°æ®åå¨ã ###7.2 Docker åºäº LXC èæå®¹å¨ææ¯ Docker ææ¯æ¯åºäº LXCï¼Linux container- Linux 容å¨ï¼èæå®¹å¨ææ¯çã > LXCï¼å ¶åç§°æ¥èª Linux 软件容å¨ï¼Linux Containersï¼ç缩åï¼ä¸ç§æä½ç³»ç»å±èæåï¼Operating systemâlevel virtualizationï¼ææ¯ï¼ä¸º Linux å æ ¸å®¹å¨åè½çä¸ä¸ªç¨æ·ç©ºé´æ¥å£ãå®å°åºç¨è½¯ä»¶ç³»ç»æå æä¸ä¸ªè½¯ä»¶å®¹å¨ï¼Containerï¼ï¼å å«åºç¨è½¯ä»¶æ¬èº«ç代ç ï¼ä»¥åæéè¦çæä½ç³»ç»æ ¸å¿ååºãéè¿ç»ä¸çåå空é´åå ±ç¨ API æ¥åé ä¸å软件容å¨çå¯ç¨ç¡¬ä»¶èµæºï¼åé åºåºç¨ç¨åºçç¬ç«æ²ç®±è¿è¡ç¯å¢ï¼ä½¿å¾ Linux ç¨æ·å¯ä»¥å®¹æçå建å管çç³»ç»æåºç¨å®¹å¨ã LXC ææ¯ä¸»è¦æ¯åå© Linux å æ ¸ä¸æä¾ç CGroup åè½å name space æ¥å®ç°çï¼éè¿ LXC å¯ä»¥ä¸ºè½¯ä»¶æä¾ä¸ä¸ªç¬ç«çæä½ç³»ç»è¿è¡ç¯å¢ã **cgroup å namespace ä»ç»ï¼** - **namespace æ¯ Linux å æ ¸ç¨æ¥éç¦»å æ ¸èµæºçæ¹å¼ã** éè¿ namespace å¯ä»¥è®©ä¸äºè¿ç¨åªè½çå°ä¸èªå·±ç¸å ³çä¸é¨åèµæºï¼èå¦å¤ä¸äºè¿ç¨ä¹åªè½çå°ä¸å®ä»¬èªå·±ç¸å ³çèµæºï¼è¿ä¸¤æ¨è¿ç¨æ ¹æ¬å°±æè§ä¸å°å¯¹æ¹çåå¨ãå ·ä½çå®ç°æ¹å¼æ¯æä¸ä¸ªæå¤ä¸ªè¿ç¨çç¸å ³èµæºæå®å¨åä¸ä¸ª namespace ä¸ãLinux namespaces æ¯å¯¹å ¨å±ç³»ç»èµæºçä¸ç§å°è£ é离ï¼ä½¿å¾å¤äºä¸å namespace çè¿ç¨æ¥æç¬ç«çå ¨å±ç³»ç»èµæºï¼æ¹åä¸ä¸ª namespace ä¸çç³»ç»èµæºåªä¼å½±åå½å namespace éçè¿ç¨ï¼å¯¹å ¶ä» namespace ä¸çè¿ç¨æ²¡æå½±åã ï¼ä»¥ä¸å ³äº namespace ä»ç»å 容æ¥èªhttps://www.cnblogs.com/sparkdev/p/9365405.html ï¼æ´å¤å ³äº namespace çå¢å 容å¯ä»¥æ¥çè¿ç¯æç« ï¼ã - **CGroup æ¯ Control Groups ç缩åï¼æ¯ Linux å æ ¸æä¾çä¸ç§å¯ä»¥éå¶ãè®°å½ãé离è¿ç¨ç» (process groups) æä½¿ç¨çç©åèµæº (å¦ cpu memory i/o çç) çæºå¶ã** ï¼ä»¥ä¸å ³äº CGroup ä»ç»å 容æ¥èª https://www.ibm.com/developerworks/cn/linux/1506_cgroup/index.html ï¼æ´å¤å ³äº CGroup çå¢å 容å¯ä»¥æ¥çè¿ç¯æç« ï¼ã **cgroup å namespace 两è 对æ¯ï¼** 两è 齿¯å°è¿ç¨è¿è¡åç»ï¼ä½æ¯ä¸¤è çä½ç¨è¿æ¯ææ¬è´¨åºå«ãnamespace æ¯ä¸ºäºé离è¿ç¨ç»ä¹é´çèµæºï¼è cgroup æ¯ä¸ºäºå¯¹ä¸ç»è¿ç¨è¿è¡ç»ä¸çèµæºçæ§åéå¶ã ## å « æ»ç» æ¬æä¸»è¦æ Docker ä¸çä¸äºå¸¸è§æ¦å¿µåäºè¯¦ç»çéè¿°ï¼ä½æ¯å¹¶ä¸æ¶å Docker çå®è£ ãéåç使ç¨ã容å¨çæä½çå 容ãè¿é¨åä¸è¥¿ï¼å¸æè¯»è èªå·±å¯ä»¥éè¿é 读书ç±ä¸å®æ¹ææ¡£ç形弿æ¡ã妿è§å¾å®æ¹ææ¡£é 读起æ¥å¾è´¹åçè¯ï¼è¿éæ¨è䏿¬ä¹¦ç±ãDocker ææ¯å ¥é¨ä¸å®æç¬¬äºçãã ## ä¹ æ¨èé 读 - [10 åéçæ Docker å K8S](https://zhuanlan.zhihu.com/p/53260098 "10åéçæDockeråK8S") - [ä»é¶å¼å§å ¥é¨ K8sï¼è¯¦è§£ K8s 容å¨åºæ¬æ¦å¿µ](https://www.infoq.cn/article/te70FlSyxhltL1Cr7gzM "ä»é¶å¼å§å ¥é¨ K8sï¼è¯¦è§£ K8s 容å¨åºæ¬æ¦å¿µ") ## å åè - [Linux Namespace å Cgroup](https://segmentfault.com/a/1190000009732550 "Linux NamespaceåCgroup") - [LXC vs Docker: Why Docker is Better](https://www.upguard.com/articles/docker-vs-lxc "LXC vs Docker: Why Docker is Better") - [CGroup ä»ç»ãåºç¨å®ä¾ååçæè¿°](https://www.ibm.com/developerworks/cn/linux/1506_cgroup/index.html "CGroup ä»ç»ãåºç¨å®ä¾ååçæè¿°")