### Docker * [1.ä»ä¹Docker](#1ä»ä¹docker) * [2.Dockerä¸èææºæä½ä¸å](#2dockerä¸èææºæä½ä¸å) * [3.ä»ä¹æ¯Dockeréå](#3ä»ä¹æ¯dockeréå) * [4.ä»ä¹æ¯Docker容å¨](#4ä»ä¹æ¯docker容å¨) * [5.Docker容卿å ç§ç¶æ](#5docker容卿å ç§ç¶æ) * [6.DockerFile䏿叏è§çæå®æ¯ä»ä¹?](#6dockerfile䏿叏è§çæå®æ¯ä»ä¹) * [7.DockerFileä¸çå½ä»¤COPYåADDå½ä»¤æä»ä¹åºå«ï¼](#7dockerfileä¸çå½ä»¤copyåaddå½ä»¤æä»ä¹åºå«) * [8.Dockerç常ç¨å½ä»¤ï¼](#8dockerç常ç¨å½ä»¤) * [9.容å¨ä¸ä¸»æºä¹é´çæ°æ®æ·è´å½ä»¤ï¼](#9容å¨ä¸ä¸»æºä¹é´çæ°æ®æ·è´å½ä»¤) * [10.å¯å¨nginx容å¨ï¼éæºç«¯å£æ å°ï¼ï¼å¹¶æè½½æ¬å°æä»¶ç®å½å°å®¹å¨htmlçå½ä»¤ï¼](#10å¯å¨nginx容å¨éæºç«¯å£æ å°å¹¶æè½½æ¬å°æä»¶ç®å½å°å®¹å¨htmlçå½ä»¤) * [11.å¦ä½ä½¿ç¨ Docker ææ¯å建ä¸ç¯å¢æ å ³ç容å¨ç³»ç»ï¼](#11å¦ä½ä½¿ç¨-docker-ææ¯å建ä¸ç¯å¢æ å ³ç容å¨ç³»ç») * [12.æä»ä¹æ¹æ³ç¡®å®ä¸ä¸ª Docker 容å¨è¿è¡ç¶æ](#12æä»ä¹æ¹æ³ç¡®å®ä¸ä¸ª-docker-容å¨è¿è¡ç¶æ) * [13. Docker Image å Docker Layer (å±) æä»ä¹ä¸å](#13-docker-image-å-docker-layer-å±-æä»ä¹ä¸å) * [14.å¦ä½åæ¢æææ£å¨è¿è¡ç容å¨ï¼](#14å¦ä½åæ¢æææ£å¨è¿è¡ç容å¨) * [15.å¦ä½æ¸ çæ¹éåå°åæ¢ç容å¨ï¼](#15å¦ä½æ¸ çæ¹éåå°åæ¢ç容å¨) * [16.å¦ä½ä¸´æ¶éåºä¸ä¸ªæ£å¨äº¤äºç容å¨çç»ç«¯ï¼èä¸ç»æ¢å®ï¼](#16å¦ä½ä¸´æ¶éåºä¸ä¸ªæ£å¨äº¤äºç容å¨çç»ç«¯èä¸ç»æ¢å®) * [17.Docker 群ï¼Swarmï¼æ¯ä»ä¹](#17docker-群swarmæ¯ä»ä¹) * [18.å¨ä½¿ç¨ Docker ææ¯ç产åä¸å¦ä½çæ§å ¶è¿è¡](#18å¨ä½¿ç¨-docker-ææ¯ç产åä¸å¦ä½çæ§å ¶è¿è¡) * [19.ä»ä¹æ¯å¤å¿å·åå¦ä½å é¤å®ï¼](#19ä»ä¹æ¯å¤å¿å·åå¦ä½å é¤å®) * [20.å¨ Windows ç³»ç»ä¸å¯ä»¥è¿è¡åçç Docker 容å¨åï¼](#20å¨-windows-ç³»ç»ä¸å¯ä»¥è¿è¡åçç-docker-容å¨å) * [21.å¨ é Linux æä½ç³»ç»å¹³å°ä¸å¦ä½è¿è¡ Docker ?](#21å¨-é-linux-æä½ç³»ç»å¹³å°ä¸å¦ä½è¿è¡-docker-) * [åè龿¥](#åè龿¥) #### 1.ä»ä¹Docker Dockeræ¯ä¸ä¸ªå®¹å¨åå¹³å°ï¼å®ä»¥å®¹å¨çå½¢å¼å°æ¨çåºç¨ç¨åºåå ¶ææä¾èµé¡¹æå å¨ä¸èµ·ï¼ä»¥ç¡®ä¿æ¨çåºç¨ç¨åºå¨ä»»ä½ç¯å¢ä¸æ ç¼è¿è¡ã #### 2.Dockerä¸èææºæä½ä¸å Docker䏿¯èæåæ¹æ³ãå®ä¾èµäºå®é å®ç°åºäºå®¹å¨çèæåææä½ç³»ç»çº§èæåçå ¶ä»å·¥å ·ã为æ¤ï¼Dockeræå使ç¨LXC驱å¨ç¨åºï¼ç¶åç§»å¨å°libcontainerç°å¨éå½å为runcãDocker主è¦ä¸æ³¨äºå¨åºç¨ç¨åºå®¹å¨å èªå¨é¨ç½²åºç¨ç¨åºãåºç¨ç¨åºå®¹å¨æ¨å¨æå åè¿è¡å个æå¡ï¼èç³»ç»å®¹å¨å设计为è¿è¡å¤ä¸ªè¿ç¨ï¼å¦èææºãå æ¤ï¼Docker被è§ä¸ºå®¹å¨åç³»ç»ä¸ç容å¨ç®¡çæåºç¨ç¨åºé¨ç½²å·¥å ·ã A 容å¨ä¸éè¦å¼å¯¼æä½ç³»ç»å æ ¸ï¼å æ¤å¯ä»¥å¨ä¸å°ä¸ç§çæ¶é´å å建容å¨ãæ¤åè½ä½¿åºäºå®¹å¨çèæåæ¯å ¶ä»èæåæ¹æ³æ´å ç¬ç¹åå¯åã B ç±äºåºäºå®¹å¨çèæå为主æºå¢å äºå¾å°ææ²¡æå¼éï¼å æ¤åºäºå®¹å¨çèæåå ·ææ¥è¿æ¬æºçæ§è½ã C 对äºåºäºå®¹å¨çèæåï¼ä¸å ¶ä»èæåä¸åï¼ä¸éè¦å ¶ä»è½¯ä»¶ã D 主æºä¸çææå®¹å¨å ±äº«ä¸»æºçè°åº¦ç¨åºï¼ä»èèçäºé¢å¤èµæºçéæ±ã E ä¸èææºæ åç¸æ¯ï¼å®¹å¨ç¶æï¼DockeræLXCæ åï¼ç大å°å¾å°ï¼å æ¤å®¹å¨æ åå¾å®¹æååã F 容å¨ä¸çèµæºç®¡çæ¯éè¿cgroupå®ç°çãCgroupsä¸å è®¸å®¹å¨æ¶èæ¯åé ç»å®ä»¬æ´å¤çèµæºãè½ç¶ä¸»æºçææèµæºé½å¨èææºä¸å¯è§ï¼ä½æ æ³ä½¿ç¨ãè¿å¯ä»¥éè¿å¨å®¹å¨å主æºä¸åæ¶è¿è¡topæhtopæ¥å®ç°ãææç¯å¢çè¾åºçèµ·æ¥é½å¾ç¸ä¼¼ã #### 3.ä»ä¹æ¯Dockeréå Dockeré忝Docker容å¨çæºä»£ç ï¼Dockeréåç¨äºå建容å¨ã使ç¨buildå½ä»¤å建éåã #### 4.ä»ä¹æ¯Dockerå®¹å¨ Docker容å¨å æ¬åºç¨ç¨åºåå ¶ææä¾èµé¡¹ï¼ä½ä¸ºæä½ç³»ç»çç¬ç«è¿ç¨è¿è¡ã #### 5.Docker容卿å ç§ç¶æ åç§ç¶æï¼è¿è¡ãå·²æåãéæ°å¯å¨ãå·²éåºã #### 6.DockerFile䏿叏è§çæå®æ¯ä»ä¹? | æä»¤ | 夿³¨ | | ----- | ---------------------- | | FROM | æå®åºç¡éå | | LABEL | åè½ä¸ºéåæå®æ ç¾ | | RUN | è¿è¡æå®å½ä»¤ | | CMD | 容å¨å¯å¨æ¶è¦è¿è¡çå½ä»¤ | #### 7ãDockerFileä¸çå½ä»¤COPYåADDå½ä»¤æä»ä¹åºå«ï¼ COPYåADDçåºå«æ¶COPYçSRCåªè½æ¯æ¬å°æä»¶ï¼å ¶ä»ç¨æ³ä¸è´ã #### 8.Dockerç常ç¨å½ä»¤ï¼ | å½ä»¤ | 夿³¨ | | ------------- | -------------------- | | docker pull | æå»ææ´æ°æå®çéå | | docker push | å°é忍éå°è¿ç¨ä»åº | | docker rm | å é¤å®¹å¨ | | docker rmi | å é¤éå | | docker images | ååºææéå | | docker ps | ååºææå®¹å¨ | #### 9.容å¨ä¸ä¸»æºä¹é´çæ°æ®æ·è´å½ä»¤ï¼ Docker cpå½ä»¤ç¨äºç©·å¥ä¸ä¸»æºä¹é´çæ°æ®æ·è´ - 主æºå°å¦å®¹å¨ï¼docker cp /www 96f7f14e99ab:/www/ - 容å¨å°ä¸»æºï¼docker cp 96f7f14e99ab:/www /tmp #### 10.å¯å¨nginx容å¨ï¼éæºç«¯å£æ å°ï¼ï¼å¹¶æè½½æ¬å°æä»¶ç®å½å°å®¹å¨htmlçå½ä»¤ï¼ ``` Docker run -d -p --name nginx2 -v /home/nginx:/usr/share/nginx/html nginx ``` #### 11.å¦ä½ä½¿ç¨ Docker ææ¯å建ä¸ç¯å¢æ å ³ç容å¨ç³»ç»ï¼ Docker ææ¯æä¸ä¸ä¸»è¦çææ¯éå¾è¾ å©å®ææ¤éæ±ï¼ - åå¨å·ï¼Volumesï¼ - ç¯å¢åéï¼Environment variableï¼æ³¨å ¥ - åªè¯»ï¼Read-onlyï¼æä»¶ç³»ç» #### 12.æä»ä¹æ¹æ³ç¡®å®ä¸ä¸ª Docker 容å¨è¿è¡ç¶æ 使ç¨å¦ä¸å½ä»¤è¡å½ä»¤ç¡®å®ä¸ä¸ª Docker 容å¨çè¿è¡ç¶æ ``` $ docker ps âa ``` è¿å°å表形å¼è¾åºè¿è¡å¨ä¸»æºä¸çææ Docker 容å¨åå ¶è¿è¡ç¶æãä»è¿ä¸ªå表ä¸å¾å®¹ææ¾å°æ³è¦ç容å¨åå ¶è¿è¡ç¶æã #### 13. Docker Image å Docker Layer (å±) æä»ä¹ä¸å Image ï¼ä¸ä¸ª Docker Image æ¯ç±ä¸ç³»å Docker åªè¯»å±ï¼read-only Layerï¼ åå»ºåºæ¥çã Layerï¼ å¨ Dockerfile é ç½®æä»¶ä¸å®æç䏿¡é ç½®æä»¤ï¼å³è¡¨ç¤ºä¸ä¸ª Docker å±ï¼Layerï¼ã å¦ä¸ Dockerfile æä»¶å å« 4 æ¡æä»¤ï¼æ¯æ¡æä»¤å建ä¸ä¸ªå±ï¼Layerï¼ã ``` FROM ubuntu:15.04 COPY . /app RUN make /app CMD python /app/app.py ``` éç¹ï¼æ¯å±åªå¯¹å ¶åä¸å±è¿è¡ä¸ï¼æï¼äºè¿åã #### 14.å¦ä½åæ¢æææ£å¨è¿è¡ç容å¨ï¼ 使ç¨docker kill $(sudo docker ps -q) #### 15.å¦ä½æ¸ çæ¹éåå°åæ¢ç容å¨ï¼ 使ç¨docker rm $ï¼sudo docker ps -a -qï¼ #### 16.å¦ä½ä¸´æ¶éåºä¸ä¸ªæ£å¨äº¤äºç容å¨çç»ç«¯ï¼èä¸ç»æ¢å®ï¼ æCtrl+pï¼åæCtrl+qï¼å¦ææCtrl+cä¼ä½¿å®¹å¨å çåºç¨è¿ç¨ç»æ¢ï¼è¿èä¼ä½¿å®¹å¨ç»æ¢ã #### 17.Docker 群ï¼Swarmï¼æ¯ä»ä¹ Docker Swarm -- Docker 群 -- æ¯åçç Docker é群æå¡å·¥å ·ãå®å°ä¸ç¾¤ Docker 主æºéæä¸ºåä¸ä¸ä¸ªèæ Docker 主æºãå©ç¨ä¸ä¸ª Docker 宿¤è¿ç¨ï¼éè¿æ åç Docker API åä»»ä½å®åçéè®¯å·¥å ·ï¼Docker Swarm æä¾éæå°å° Docker ä¸»æºæ©æ£å°å¤å°ä¸»æºä¸çæå¡ã #### 18.å¨ä½¿ç¨ Docker ææ¯ç产åä¸å¦ä½çæ§å ¶è¿è¡ Docker å¨äº§å䏿ä¾å¦ è¿è¡ç»è®¡å Docker äºä»¶çå·¥å ·ãå¯ä»¥éè¿è¿äºå·¥å ·å½ä»¤è·å Docker è¿è¡ç¶åµçç»è®¡ä¿¡æ¯ææ¥åã Docker stats ï¼ éè¿æå®çå®¹å¨ id è·åå ¶è¿è¡ç»è®¡ä¿¡æ¯ï¼å¯è·å¾å®¹å¨å¯¹ CPUï¼å åä½¿ç¨æ åµççç»è®¡ä¿¡æ¯ï¼ç±»ä¼¼ Linux ç³»ç»ä¸ç top å½ä»¤ã Docker events ï¼Docker äºä»¶æ¯ä¸ä¸ªå½ä»¤ï¼ç¨äºè§å¯æ¾ç¤ºè¿è¡ä¸ç Docker ä¸ç³»åçè¡ä¸ºæ´»å¨ã ä¸è¬ç Docker äºä»¶æï¼attachï¼å ³èï¼ï¼commitï¼æäº¤ï¼ï¼dieï¼åµæ»ï¼ï¼detachï¼åæ¶å ³èï¼ï¼renameï¼æ¹åï¼ï¼destoryï¼éæ¯ï¼çãä¹å¯ä½¿ç¨å¤ä¸ªé项对äºä»¶è®°å½ç鿾尿³è¦çäºä»¶ä¿¡æ¯ã #### 19.ä»ä¹æ¯å¤å¿å·åå¦ä½å é¤å®ï¼ å¤å¿å·æ¯æªä¸ä»»ä½å®¹å¨å ³èçå·ãå¨ Docker vã1.9 ä¹åççæ¬ä¸ï¼å é¤è¿äºå¤å¿å·åå¨å¾å¤§é®é¢ã #### 20.å¨ Windows ç³»ç»ä¸å¯ä»¥è¿è¡åçç Docker 容å¨åï¼ å¨ 'Windows Server 2016' ç³»ç»ä¸ï¼ ä½ å¯ä»¥è¿è¡ Windows çåç容å¨ï¼ 微软æ¨åºå ¶æ 忝 'Windows Nano Server' ï¼ ä¸ä¸ªè½»é级çè¿è¡å¨å®¹å¨ä¸ç Windows åçç³»ç»ã æ¨å¯ä»¥å¨å ¶ä¸å¸ç½²åºäº .NET çåºç¨ã è¯æ³¨ï¼ ç»å Docker çåºæ¬ææ¯åçï¼åèåé¢ç é®é¢ 26 å é®é¢ 27ï¼ å¯æ¨æµï¼ 微软å¨ç³»ç»å æ ¸ä¸å¼åäºå¯¹ Docker çæ¯æï¼ æ¯æå ¶éæºç³»ç»ç容å¨åèæææ¯ãä½è¯è è®¤ä¸ºï¼ Windows ç³»ç»æ¬å°±æ¯éæºç´§è¦åçç³»ç»ï¼ 好åä½ å¨æ¬æºä¸ä¸è£ .NET ç»ä»¶ï¼ååºç¨è½å¾å¥½è¿è¡ä¼¼çãä½å¿ åå¼ä¸ªå®¹å¨ï¼æµªè´¹èµæºãè¿åªæ¯è¯è èªå·±ä¹åè§ï¼æ³å·å°±å·ï¼ å¦ï¼ Windows Server 2016 çæ¬ä¹åçé½å¯æ¯æè¿ç§åç Docker ææ¯ï¼å¦ Windows Server 2018 çã #### 21.å¨ é Linux æä½ç³»ç»å¹³å°ä¸å¦ä½è¿è¡ Docker ? 容å¨åèæææ¯æ¦å¿µå¯è½æ¥æºäºï¼å¨ Linux å æ ¸çæ¬ 2.6.24 ä¸å å ¥ç对 å½å空é´ï¼ namespaceï¼ çææ¯æ¯æç¹æ§ã 容å¨åè¿ç¨å å ¥å ¶è¿ç¨ ID å°å ¶åå»ºçæ¯ä¸ªè¿ç¨ä¸å¹¶ä¸å¯¹æ¯ä¸ªè¿ç¨ä¸çç³»ç»çº§è°ç¨è¿è¡è®¿é®æ§å¶å审æ¥ã å ¶æ¬èº«æ¯ç±ç³»ç»çº§è°ç¨ clone () å éåºæ¥çè¿ç¨ï¼ å è®¸å ¶å建å±äºèªå·±å½å空é´çè¿ç¨å®ä¾ï¼èåºå«äºä¹åçï¼å½å±ä¸æ´ä¸ªæ¬æºç³»ç»çè¿ç¨å®ä¾ã 妿ä¸è¿°å¨ Linux ç³»ç»å æ ¸ä¸çææ¯å®ç°æä¸ºå¯è½ï¼ é£ä¹ææ¾çé®é¢æ¯å¦ä½å¨ é Linux ç³»ç»ä¸è¿è¡å®¹å¨åç Docker ãè¿å»ï¼ Mac å Windows ç³»ç»ä¸è¿è¡ Docker 容å¨é½ä½¿ç¨ Linux èææºï¼VMsï¼ ææ¯ï¼ Docker å·¥å ·ç®±ä½¿ç¨ç容å¨è¿è¡å¨ Virtual Box èææºä¸ã ç°å¨ï¼ææ°çæ 嵿¯ï¼ Windows å¹³å°ä¸ä½¿ç¨çæ¯ Hyper-V äº§åææ¯ï¼Mac å¹³å°ä¸ä½¿ç¨çæ¯ Hypervisor.framework ï¼æ¡æ¶ï¼äº§åææ¯ã #### åè龿¥ https://www.cnblogs.com/xiaoyangjia/p/11388806.html https://www.wkcto.com/article/detail/662 https://blog.csdn.net/qq_43286578/article/details/105160725 https://learnku.com/server/t/42179 https://www.jianshu.com/p/f11077d7b301