docker容器極簡(jiǎn)教程

一,小王對(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í)。

    參考連接:http://www.batxue.com/html/jsgh/20171010/2074.html

    最后編輯于
    ?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
    【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
    平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

    相關(guān)閱讀更多精彩內(nèi)容

    • Docker — 云時(shí)代的程序分發(fā)方式 要說(shuō)最近一年云計(jì)算業(yè)界有什么大事件?Google Compute Engi...
      ahohoho閱讀 15,828評(píng)論 15 147
    • 轉(zhuǎn)載自 http://blog.opskumu.com/docker.html 一、Docker 簡(jiǎn)介 Docke...
      極客圈閱讀 10,728評(píng)論 0 120
    • 五、Docker 端口映射 無(wú)論如何,這些 ip 是基于本地系統(tǒng)的并且容器的端口非本地主機(jī)是訪(fǎng)問(wèn)不到的。此外,除了...
      R_X閱讀 1,954評(píng)論 0 7
    • 0x01 核心概念 Docker鏡像類(lèi)似于虛擬機(jī)鏡像,可以理解為一個(gè)面向Docker引擎的只讀模板,包含了文件系統(tǒng)...
      閑云逸心閱讀 4,955評(píng)論 0 9
    • 轉(zhuǎn)眼間畢業(yè)五年,時(shí)間就在指尖悄悄的溜在,經(jīng)歷過(guò)迷茫無(wú)助,可現(xiàn)在想想,更加迷茫,更加無(wú)助,我得到了什么,又失...
      每天都是路過(guò)閱讀 274評(píng)論 0 0

    友情鏈接更多精彩內(nèi)容