一,小王對(duì)于容器的困惑
小王剛開(kāi)始學(xué)習(xí)Docker的時(shí)候,找資料在網(wǎng)上看到最多的是Docker的好處。比如:
1、Docker 容器的啟動(dòng)可以在秒級(jí)實(shí)現(xiàn),這相比傳統(tǒng)的虛擬機(jī)方式要快得多
2、Docker 對(duì)系統(tǒng)資源的利用率很高,一臺(tái)主機(jī)上可以同時(shí)運(yùn)行數(shù)千個(gè) Docker 容器。
3、更快速的交付和部署、更輕松的遷移和擴(kuò)展
等等……
因?yàn)樾⊥跏亲鰆ava開(kāi)發(fā)的,他們現(xiàn)有的模式是在一個(gè)服務(wù)器上安裝統(tǒng)一一個(gè)jdk,運(yùn)行多個(gè)tomcat,每個(gè)tomcat里面一個(gè)java應(yīng)用,大家也知道tomcat不用安裝,當(dāng)他們項(xiàng)目要遷徙的時(shí)候也只需要把整個(gè)tomcat打包然后在另一臺(tái)服務(wù)器上解壓就ok了,也很簡(jiǎn)單。。。當(dāng)時(shí)小王就不懂Docker有什么好處,一度以為對(duì)他們現(xiàn)有的模式?jīng)]用。知道昨天跟其他人交流小王才弄明白一個(gè)問(wèn)題,那就是應(yīng)用隔離與資源獨(dú)立!!
這是小王剛畫(huà)的一個(gè)圖,現(xiàn)在他們的模式是A1,所有的應(yīng)用共享服務(wù)器的CPU、內(nèi)存等資源,這時(shí)如果一個(gè)應(yīng)用出現(xiàn)問(wèn)題,比如CPU爆滿(mǎn)等等,另一個(gè)應(yīng)用也就玩完了。所以要這時(shí)就要做到資源獨(dú)立,一個(gè)應(yīng)用一份資源,現(xiàn)在要做到這樣只有做成A2那樣,一個(gè)服務(wù)器上裝幾個(gè)虛擬機(jī),一個(gè)虛擬機(jī)一個(gè)應(yīng)用。這時(shí)如果你要重啟虛擬機(jī),你想想你重啟電腦要多久。而且你想遷移應(yīng)用的話(huà),你就又要裝虛擬機(jī),配環(huán)境等等,麻煩不?我是覺(jué)得麻煩。如果有了Docker,就是A3 的模式,容器是什么概念我就不說(shuō)了,這時(shí)一個(gè)服務(wù)器上運(yùn)行多個(gè)容器,一個(gè)容器擁有獨(dú)立的CPU、內(nèi)存等資源,完全滿(mǎn)足了應(yīng)用隔離的需求。而且容器重啟,1秒搞定!應(yīng)用遷移的時(shí)候,這個(gè)大家應(yīng)該也知道,所有裝了Docker的服務(wù)器,只需把鏡像pull或者load進(jìn)去,run,一切OK,就是這么任性!
二,docker教程
基本概念
Docker是基于Go語(yǔ)言實(shí)現(xiàn)的云開(kāi)源項(xiàng)目,誕生于2013年初,最初發(fā)起者是dotCloud公司,其目標(biāo)是“Build, Ship and Run Any App, Anywhere”,主要概念包括鏡像、容器、倉(cāng)庫(kù)。Docker引擎的技術(shù)是Linux容器(Linux Containers, LXC)技術(shù)。容器有效地將由單個(gè)操作系統(tǒng)的資源劃分到孤立的組中,以便更好地在孤立的組之間平衡有沖突的資源使用需求。
鏡像Image:類(lèi)似于虛擬機(jī)鏡像,可以理解為面向Docker引擎的只讀模板,包括文件系統(tǒng)。
獲取鏡像:docker pull NAME[:TAG]
查看鏡像信息: 查看所有鏡像docker images;查看某個(gè)鏡像具體信息docker inspect
添加標(biāo)簽:?docker tag xxx ubuntu:first
搜尋鏡像:?docker search xxx,?-s=0指定星級(jí)
刪除鏡像:?docker rmi xxx,一般情況下會(huì)刪除鏡像的標(biāo)簽,而不是文件,當(dāng)刪除最后一個(gè)TAG時(shí)則會(huì)刪除文件,需要注意。
使用鏡像ID刪除鏡像:?-f刪除可以強(qiáng)制刪除鏡像,推薦做法為先刪除依賴(lài)該鏡像的所有容器,之后刪除鏡像,Qdocker rm e81
創(chuàng)建鏡像: 創(chuàng)建鏡像包括3種方式,基于已有鏡像的容器創(chuàng)建,首先啟動(dòng)一個(gè)鏡像docker run -ti ubuntu:14.04 /bin/bash,任意創(chuàng)建一個(gè)test文件,之后創(chuàng)建鏡像docker commit -m "add file" -a "xionger" a9fdsfxx test;基于本地模板創(chuàng)建,推薦使用OpenVZ提供的模板來(lái)創(chuàng)建;基于Dockerfile創(chuàng)建。
存出鏡像和載入鏡像(導(dǎo)出、導(dǎo)入): 導(dǎo)出到本地文件sudo docker save -o ubuntu_14.04.tar ubuntu:14.04,導(dǎo)入鏡像docker load --input ubuntu_14.04.tar
上傳鏡像:?docker push NAME[:TAG],默認(rèn)上傳鏡像到DockerHub官方倉(cāng)庫(kù),需要登錄。
容器Container:類(lèi)似一個(gè)輕量級(jí)的沙箱,可以利用容器來(lái)運(yùn)行和隔離應(yīng)用,容器從鏡像啟動(dòng)時(shí)會(huì)在鏡像的最上層創(chuàng)建一個(gè)可寫(xiě)層,鏡像本身保持不變。
創(chuàng)建容器:docker create -it ubuntu:lastest,通過(guò)docker ps -a查看容器,通過(guò)docker start啟動(dòng)容器
新建并啟動(dòng)容器:docker run ubuntu /bin/bash,-d參數(shù)守護(hù)態(tài)運(yùn)行,通過(guò)Ctrl+d或者exit退出容器
終止容器:docker stop xxx,首先會(huì)發(fā)送SIGTERM信號(hào),一段時(shí)候后發(fā)送SIGKILL,可以通過(guò)docker kill強(qiáng)行中止,docker restart可以關(guān)閉并重啟容器,docker ps -a -q可以查看處于終止態(tài)的容器信息。
進(jìn)入容器:docker attach xxx會(huì)被阻塞不推薦使用;docker exec -ti xxx /bin/bash可以直接在容器中運(yùn)行命令;nsenter工具。
刪除容器:docker rm xxx,需要注意區(qū)分,rmi是刪除鏡像,rm是刪除容器
導(dǎo)入和導(dǎo)出容器:docker export xxx導(dǎo)出一個(gè)已經(jīng)創(chuàng)建的容器到文件,不管是否在運(yùn)行;docker import,需要理解的是export的是快照,信息少,而save的是鏡像,信息多,包含元數(shù)據(jù)和歷史信息。
倉(cāng)庫(kù)Repository:類(lèi)似于代碼倉(cāng)庫(kù),是Docker存放鏡像的場(chǎng)所,而Registry注冊(cè)服務(wù)器是存放倉(cāng)庫(kù)的地方,其上放著很多倉(cāng)庫(kù),每個(gè)倉(cāng)庫(kù)集中存放某一類(lèi)鏡像的多個(gè)文件,可以通過(guò)tag標(biāo)簽來(lái)區(qū)分。目前最大的公有倉(cāng)庫(kù)是Docker Hub,而國(guó)內(nèi)是Docker Pool。
Docker Pub:本地用戶(hù)目錄.dockercfg中存儲(chǔ)登錄信息,在倉(cāng)庫(kù)中存在centos這類(lèi)由Docker公司創(chuàng)建、驗(yàn)證、支持的根鏡像,也有類(lèi)似xionger/centos這類(lèi)由個(gè)人提供的鏡像,可以通過(guò)-s N來(lái)查看高星鏡像。此外,Docker Hub還可以通過(guò)設(shè)置追蹤類(lèi)似GitHub的網(wǎng)站,然后根據(jù)其更行,自動(dòng)執(zhí)行創(chuàng)建。
創(chuàng)建和使用私有倉(cāng)庫(kù):可以通過(guò)官方提供的registry鏡像來(lái)簡(jiǎn)單搭建一套本地私有倉(cāng)庫(kù)環(huán)境。
docker?run?-d?-p?5000:5000?-v?/opt/data/registry:/tmp/registry?registry
docker?images
docker?tag?ubuntu:14.04?139.196.96.27:5000/test
docker?push?139.196.xx.xx:5000/test
curl?http://139.196.xx.xx:5000/v1/searchdocker?pull?139.196.xx.xx:5000/test
Tip:
CURL(CommandLine Uniform Resource Locator):curl是利用URL語(yǔ)法在命令行方式下工作的開(kāi)源文件傳輸工具。
安裝Docker(Ubuntu16.04),默認(rèn)安裝在/var/lib/docker
????sudo?apt-get?install?apt-transport-https
????sudo?apt-get?update
????sudo?apt-get?install?-y?docker.io
Tip:
在用putty連接阿里云時(shí),經(jīng)常會(huì)斷開(kāi),如何解決?
解決方法:在Connection里面有個(gè)Seconds between keepaliaves。這里就是每間隔指定的秒數(shù),就給服務(wù)器發(fā)送一個(gè)空的數(shù)據(jù)包,來(lái)保持連接。以免登錄的主機(jī)那邊在長(zhǎng)時(shí)間沒(méi)接到數(shù)據(jù)后,會(huì)自動(dòng)斷開(kāi)SSH的連接,設(shè)置為10。
阿里云購(gòu)買(mǎi)ECS, 操作系統(tǒng)版本Ubuntu 16.04(LTS)
進(jìn)階概念
數(shù)據(jù)管理:在使用docker過(guò)程中,會(huì)涉及查看容器內(nèi)應(yīng)用產(chǎn)生的數(shù)據(jù),或者數(shù)據(jù)在多個(gè)容器間共享,此時(shí)需要管理數(shù)據(jù)的兩種方式包括數(shù)據(jù)卷Data Volumes和數(shù)據(jù)卷容器Data Volume Containers.
數(shù)據(jù)卷:是一個(gè)可供容器使用的特殊目錄,繞過(guò)文件系統(tǒng),具有的特性包括數(shù)據(jù)卷可以在容器之間共享和重用、對(duì)數(shù)據(jù)卷的修改會(huì)馬上生效、對(duì)數(shù)據(jù)卷的更新不會(huì)影響鏡像、卷會(huì)一致存在,知道沒(méi)有容器使用,類(lèi)似Linux下對(duì)目錄或文件進(jìn)行mount操作。
在容器內(nèi)創(chuàng)建一個(gè)數(shù)據(jù)卷:使用training/webapp鏡像創(chuàng)建一個(gè)web容器,并創(chuàng)建一個(gè)數(shù)據(jù)卷掛在到容器的/webapp目錄,docker run -d -P --name web -v /webapp python app.py。
掛載一個(gè)主機(jī)目錄作為數(shù)據(jù)卷:加載主機(jī)的/src/webapp目錄到容器的/opt/webapp目錄,docker run -d -P --name web - v /src/webapp:/opt/webapp training/webapp python app.py。
Tip:編輯工具包括vi或者sed?--in-place,推薦掛載目錄而不是文件,因?yàn)閕node變化會(huì)造成docker容器啟動(dòng)失敗。
數(shù)據(jù)卷容器:其實(shí)就是一個(gè)普通的容器,其中會(huì)掛載數(shù)據(jù)卷用戶(hù)共享,創(chuàng)建數(shù)據(jù)庫(kù)容器dbdata,之后其他容器將掛載可以?huà)燧d該數(shù)據(jù)卷容器中的數(shù)據(jù)卷。
????docker?run?-it?-v?/dbdata?--name?dbdata?ubuntu
????ls
????docker?run?-it?--volumes-from?dbdata?--name?db1?ubuntu
利用數(shù)據(jù)卷容器遷移數(shù)據(jù):可以通過(guò)數(shù)據(jù)卷容器對(duì)其中的數(shù)據(jù)卷進(jìn)行備份、回復(fù),以實(shí)現(xiàn)數(shù)據(jù)的遷移。接下來(lái)的示例利用ubuntu鏡像創(chuàng)建一個(gè)容器worker,使用--volumes-from dbdata參數(shù)掛載dbdata容器的數(shù)據(jù)卷,
使用-v ${pwd}:/backup參數(shù)來(lái)掛載本地的當(dāng)前目錄到worker容器的/backup目錄,
容器啟動(dòng)后,使用tar cvf /backup/backup.tar /dbdata來(lái)講/dbdata下內(nèi)容備份為容器內(nèi)的/backup/backup.tar。
????docker?run?--volumes-from?dbdata?-v?${pwd}:/backup?--name?worker?ubuntu?tar?cvf?/backup/backup.tar?/dbdata????//恢復(fù),首先創(chuàng)建一個(gè)帶有數(shù)據(jù)卷的容器dbdata2,之后?創(chuàng)建另一個(gè)新的容器,掛載dbdata2容器,并使用untar解壓備份文件到所掛載的容器卷中即可
????docker?run?-v?/dbdata?--name?dbdata2?ubuntu?/bin/bash
????docker?run?--volumes-from?dbdata2?-v?${pwd}:/backup?busybox?tar?xvf?/backup/backup.tar
在生產(chǎn)環(huán)境,推薦使用分布式文件系統(tǒng)Ceph、GPFS、HDFS定期對(duì)主機(jī)的本地?cái)?shù)據(jù)進(jìn)行備份。
網(wǎng)絡(luò)基礎(chǔ)配置:
端口映射實(shí)現(xiàn)訪(fǎng)問(wèn)容器:在啟動(dòng)容器時(shí),如果不指定對(duì)應(yīng)參數(shù),在容器外部是無(wú)法通過(guò)網(wǎng)絡(luò)來(lái)訪(fǎng)問(wèn)容器內(nèi)的網(wǎng)絡(luò)應(yīng)用和服務(wù)的??梢允褂?code>-p ip:hostPort:containerPort映射端口,docker logs查看應(yīng)用的信息,docker port查看端口配置。
????docker?run?-d?-p?5000:5000?-p?3000:80?training/webapp?python?app.py
容器互聯(lián)實(shí)現(xiàn)容器間通信:容器見(jiàn)的連接系統(tǒng)是除了端口映射外另一種可以與容器中應(yīng)用進(jìn)行交互的方式,它會(huì)在源和接受容器間創(chuàng)建一個(gè)隧道,接受容器可以看到源容器制定的信息,比如--link連接應(yīng)用容器和數(shù)據(jù)庫(kù)容器,這樣可以保證db的接口不暴露到公網(wǎng)。
????docker?run?-d?-P?--name?web?training/webapp?python?app.py
????docker?ps?-l
????docker?inspect?-f?xxx
????//容器互聯(lián)
????docker?run?-d?--name?db?training/postgres
????docker?rm?-f?web
????docker?run?-d?-P?--name?web?--link?db:db?training/webapp?python?app.py
????docker?ps
Docker通過(guò)兩種方式為容器公開(kāi)連接信息,包括環(huán)境變量env和/etc/hosts文件,通過(guò)apt-get install -yqq inetutils-ping安裝ping。
擴(kuò)展知識(shí):Docker已有的實(shí)現(xiàn)PaaS的項(xiàng)目有Deis、Flynn等,持續(xù)集成方面有Drone,管理工具有Citadel, Shipyard, DockerUI等。
使用Dockerfile創(chuàng)建鏡像
基本結(jié)構(gòu):dockerfile由命令語(yǔ)句組成,支持#開(kāi)頭的注釋?zhuān)譃?個(gè)部分,包括基礎(chǔ)鏡像信息、維護(hù)者信息、鏡像操作指令和容器啟動(dòng)執(zhí)行指令,在docker hub上有很多dockerfile的demo,需要時(shí)可以直接使用。
????#基礎(chǔ)鏡像
????FROM?ubuntu???
????#維護(hù)者信息
????MAINTAINER?xionger?xiongere@email.com???
????#鏡像的操作指令
????RUN?apt-get?update?&&?apt-get?install?-y?nginx
????RUN?echo?"\ndaemon?off;"?>>?/etc/nginx/nginx.conf????
????#容器啟動(dòng)時(shí)執(zhí)行指令
????CMD?/usr/sbin/nginx
指令:一般格式為INSTRUCTION arguments,具體如下所示。
FROM?<image>:<tag>默認(rèn)的第一條指令
MAINTAINER?<name>維護(hù)者信息
RUN?<command>或者RUN?["executable", "param1", "param2"],前者將在shell終端中運(yùn)行命令,即/bin/sh -c,后者則使用exec執(zhí)行。
CMD?["executable", "param1", "param2"]使用exec執(zhí)行,推薦方式。
EXPOSE?<port> [<port>..]告訴Docker服務(wù)器容器暴露的端口號(hào),供互聯(lián)網(wǎng)系統(tǒng)使用。
ENV?<key> <value>指定一個(gè)環(huán)境變量,會(huì)被后續(xù)的RUN指令使用
ADD?<src> <dest>該命令將復(fù)制指定到容器中的
COPY?<src> <dest>復(fù)制本地主機(jī)<src>到容器中<dest>,推薦使用
ENTRYPOINT?["executable", "param1", "param2"]配置容器啟動(dòng)后執(zhí)行的命令,不能被docker run提供的參數(shù)覆蓋
VOLUME?["/data"]創(chuàng)建一個(gè)可以從本地主機(jī)或其他容器掛載的掛載點(diǎn),一般用來(lái)存放數(shù)據(jù)庫(kù)和需要保持的數(shù)據(jù)。
USER?daemon指定運(yùn)行容器時(shí)的UID,后續(xù)的RUN也會(huì)使用指定用戶(hù),如RUN group add -r postgres && useradd -r -g postgres postgres,要獲取管理員權(quán)限時(shí)可以使用gosu而不是sudo
WORKDIR?path/to/workdir為后續(xù)的指令配置工作目錄
ONBUILD?[INSTRUCTION]配置當(dāng)所創(chuàng)建的鏡像作為其他新創(chuàng)建鏡像的基礎(chǔ)鏡像時(shí),所執(zhí)行的操作指令。
創(chuàng)建鏡像:編寫(xiě)好dockerfile后,可以通過(guò)docker build命令來(lái)創(chuàng)建鏡像,該命令將讀取指定路徑下(包括子目錄)的dockerfile,并將該路徑下所有內(nèi)容發(fā)送給docker服務(wù)端,由服務(wù)端來(lái)創(chuàng)建鏡像,此外可以通過(guò).dockerignore文件來(lái)忽略目錄或文件,還可以通過(guò)-t指定鏡像的標(biāo)簽信息。示例docker build -t build_repo/first_image /tmp/docker_builder/
實(shí)踐之道
操作系統(tǒng):CentOS和Ubuntu都可以,個(gè)人喜好ubuntu(還可以選用debian:jessie, alpine),屬于最基礎(chǔ)的鏡像。
tip: 當(dāng)試圖安裝軟件出現(xiàn)沒(méi)有相關(guān)包信息時(shí),需要apt-get update或編輯/etc/apt/sources.list文件(deb, deb-src,需要時(shí)在查詢(xún),比如163的鏡像,阿里云的話(huà)無(wú)需設(shè)置),可以通過(guò)netstat -tunlp查看當(dāng)前網(wǎng)絡(luò)情況。
支持SSH:當(dāng)需要直接進(jìn)入容器進(jìn)行管理時(shí)安裝,不必須。
Web服務(wù)器與應(yīng)用(Nginx,可以使用淘寶優(yōu)化的Tengine代替Nginx,Tomcat):在/usr/docker下創(chuàng)建tomcat,nginx目錄應(yīng)用存放Dockerfile文件,最終還是選擇通過(guò)pull拉去鏡像的方式安裝應(yīng)用,dockerfile比較復(fù)雜。
????docker?pull?nginx:1.12
????docker?ps?-a????
??
????docker?run?--name?nginx01?-p?80:80?-v?$PWD/www:/www?-v?$PWD/conf:/etc/nginx?-v?$PWD/logs:/wwwlogs?-d?nginx:1.12
????docker?pull?tomcat:8.0
????docker?run?--name?tomcat01?-p?8080:8080?-v?$PWD/test:/usr/local/tomcat/webapps/test?-d?tomcat:8.0
tip:
有時(shí)可能需要重啟docker服務(wù),?service docker restart,可以選擇tomcat7.0:jdk1.8
數(shù)據(jù)庫(kù)應(yīng)用MySQL(5.6), MongoDB(3.2), Redis(3.2)
docker?pull?mysql
docker?run?-p?3306:3306?--name?mysql01?-v?$PWD/conf:/etc/mysql?-v?$PWD/logs:/logs?-v?$PWD/data:/mysql_data?-e?MYSQL_ROOT_PASSWORD=123456?-d?mysql//主從模式docker?run?-p?3306:3306?--name?mysql01?-v?$PWD/conf01:/etc/mysql?-v?$PWD/logs01:/logs?-v?$PWD/data01:/mysql_data?-e?MYSQL_ROOT_PASSWORD=123456?-e?REPLICATION_MASTER=true?-d?mysql
docker?run?-p?3307:3306?--name?mysql02?-v?$PWD/conf02:/etc/mysql?-v?$PWD/logs02:/logs?-v?$PWD/data02:/mysql_data?-e?MYSQL_ROOT_PASSWORD=123456?-e?REPLICATION_SLAVE=true?--link?mysql01:mysql01?-d?mysql//mongodb,暫時(shí)單機(jī),其默認(rèn)提供集群的配置docker?pull?mongo:3.2docker?run?-p?27017:27017?-p?28017:28017?--name?mongodb01?-v?$PWD/db01:/data/db?-e?MONGODN_PASS="123456"?-d?mongo:3.2//redisdocker?pull??redis:3.2docker?run?-p?6379:6379?--name?redis01?-v?$PWD/data01:/data??-d?redis:3.2?redis-server?--appendonly?yes
tip:可以進(jìn)入db的容器進(jìn)行操作,docker exec -ti mysql /bin/bash
其他應(yīng)用:maven, gitlab, jenkins, dubbo, cat,具體內(nèi)容將在之后的文章中陸續(xù)介紹。
????docker?pull?jenkins:2.60.1
????docker?run?--name?jenkins01?-p?9090:8080?-p?9091:50000?-v?$PWD/jenkins01:/var/jenkins_home?-d?jenkins:2.60.1
構(gòu)建Docker容器集群:核心問(wèn)題就是讓不同主機(jī)中的Docker容器相互訪(fǎng)問(wèn),簡(jiǎn)單的方式包括兩種。使用自定義網(wǎng)橋連接跨主機(jī)容器,Docker默認(rèn)的網(wǎng)橋是docker0,可以通過(guò)brctl show查看。使用Ambassador容器:當(dāng)2個(gè)docker容器再同意主機(jī)時(shí),可以通過(guò)--link相互訪(fǎng)問(wèn),如果需要跨主機(jī)實(shí)現(xiàn),則需要知道其他物理主機(jī)的IP地址。
Docker CI集成方案:在之后的Jenkins一文中將重點(diǎn)分析。
Tip:
目前百度BAE已經(jīng)在生產(chǎn)環(huán)境使用Docker,Airbnb,ebay已使用mesos集成docker部署應(yīng)用,此外可以使用apparmor對(duì)容器的能力進(jìn)行限制。
三,docker優(yōu)點(diǎn)
? ?1、快速分發(fā)應(yīng)用
Docker可以幫助你把控開(kāi)發(fā)各個(gè)周期。Docker允許你在本地的開(kāi)發(fā)環(huán)境中進(jìn)行代碼開(kāi)發(fā),然后將開(kāi)發(fā)好的應(yīng)用整合到團(tuán)隊(duì)的開(kāi)發(fā)流程中。
比如:你可以再本地編寫(xiě)代碼,當(dāng)編寫(xiě)完成后。你將代碼開(kāi)發(fā)堆棧信息共享給團(tuán)隊(duì)成員。當(dāng)他們也編寫(xiě)完成后,同樣共享開(kāi)發(fā)堆棧信息。然后再測(cè)試環(huán)境中,使用團(tuán)隊(duì)共享的開(kāi)發(fā)堆棧就可以進(jìn)行所需要的測(cè)試了。當(dāng)完成測(cè)試后,團(tuán)隊(duì)就可以將測(cè)試通過(guò)的docker鏡像(images)發(fā)布到產(chǎn)品環(huán)境中。
2、方便部署和易于管理
Docker基于容器的機(jī)制可以很容易進(jìn)行部署。Docker容器可以在本地主機(jī)上面執(zhí)行,也可以在虛擬機(jī)中執(zhí)行,不論這些虛擬機(jī)是在本地或者云中。
Docker快速部署和輕量級(jí)的特性也使得管理負(fù)載變得很容易。你可以快速啟動(dòng)或者銷(xiāo)毀容器。這種時(shí)間幾乎是實(shí)時(shí)的。
3、可以執(zhí)行大量的工作負(fù)載
因?yàn)镈ocker具有便于部署和快速啟停的方式,同時(shí)docker也提供了可行的,符合效益-成本的虛擬機(jī)管理機(jī)制。使得docker很適合負(fù)載要求高的環(huán)境。比如:將你的云平臺(tái)作為PAAS用途時(shí),或者你要求你的環(huán)境具有高資源使用率時(shí)。