摘要:近期非?;馃?,無論是從上的代碼活躍度,還是宣布在中正式支持,都給業(yè)界一個(gè)信號(hào),這是一項(xiàng)創(chuàng)新型的技術(shù)解決方案。可以簡化部署多種應(yīng)用實(shí)例工作,比如應(yīng)用后臺(tái)應(yīng)用數(shù)據(jù)庫應(yīng)用大數(shù)據(jù)應(yīng)用比如集群消息隊(duì)列等等都可以打包成一個(gè)部署。
1. docker是什么
Docker is an open-source engine that automates the deployment of any application as a lightweight, portable, self-sufficient container that will run virtually anywhere.
Docker是 PaaS 提供商dotCloud開源的一個(gè)基于 LXC 的高級(jí)容器引擎, 源代碼托管在 Github 上, 基于go語言并遵從Apache2.0協(xié)議開源。Docker近期非?;馃?,無論是從 GitHub 上的代碼活躍度,還是Redhat宣布在RHEL7中正式支持Docker,都給業(yè)界一個(gè)信號(hào),這是一項(xiàng)創(chuàng)新型的技術(shù)解決方案。就連 Google 公司的 Compute Engine 也支持 docker 在其之上運(yùn)行,國內(nèi)“BAT”先鋒企業(yè)百度Baidu App Engine(BAE)平臺(tái)也是以Docker作為其PaaS云基礎(chǔ)。
Docker產(chǎn)生的目的就是為了解決以下問題:
環(huán)境管理復(fù)雜:從各種OS到各種中間件再到各種App,一款產(chǎn)品能夠成功發(fā)布,作為開發(fā)者需要關(guān)心的東西太多,且難于管理,這個(gè)問題在軟件行業(yè)中普遍存在并需要直接面對(duì)。Docker可以簡化部署多種應(yīng)用實(shí)例工作,比如Web應(yīng)用、后臺(tái)應(yīng)用、數(shù)據(jù)庫應(yīng)用、大數(shù)據(jù)應(yīng)用比如Hadoop集群、消息隊(duì)列等等都可以打包成一個(gè)Image部署。
云計(jì)算時(shí)代的到來:AWS的成功,引導(dǎo)開發(fā)者將應(yīng)用轉(zhuǎn)移到云上, 解決了硬件管理的問題,然而軟件配置和管理相關(guān)的問題依然存在 (AWS cloudformation是這個(gè)方向的業(yè)界標(biāo)準(zhǔn), 樣例模板可參考這里)。Docker的出現(xiàn)正好能幫助軟件開發(fā)者開闊思路,嘗試新的軟件管理方法來解決這個(gè)問題。
虛擬化手段的變化:云時(shí)代采用標(biāo)配硬件來降低成本,采用虛擬化手段來滿足用戶按需分配的資源需求以及保證可用性和隔離性。然而無論是KVM還是Xen,在 Docker 看來都在浪費(fèi)資源,因?yàn)橛脩粜枰氖歉咝н\(yùn)行環(huán)境而非OS,GuestOS既浪費(fèi)資源又難于管理,更加輕量級(jí)的LXC更加靈活和快速。
LXC的便攜性:LXC在 Linux 2.6 的 Kernel 里就已經(jīng)存在了,但是其設(shè)計(jì)之初并非為云計(jì)算考慮的,缺少標(biāo)準(zhǔn)化的描述手段和容器的可便攜性,決定其構(gòu)建出的環(huán)境難于分發(fā)和標(biāo)準(zhǔn)化管理(相對(duì)于KVM之類image和snapshot的概念)。Docker就在這個(gè)問題上做出了實(shí)質(zhì)性的創(chuàng)新方法。
Docker的主要特性如下:
文件系統(tǒng)隔離:每個(gè)進(jìn)程容器運(yùn)行在完全獨(dú)立的根文件系統(tǒng)里。
資源隔離:可以使用cgroup為每個(gè)進(jìn)程容器分配不同的系統(tǒng)資源,例如CPU和內(nèi)存。
網(wǎng)絡(luò)隔離:每個(gè)進(jìn)程容器運(yùn)行在自己的網(wǎng)絡(luò)命名空間里,擁有自己的虛擬接口和IP地址。
寫時(shí)復(fù)制:采用寫時(shí)復(fù)制方式創(chuàng)建根文件系統(tǒng),這讓部署變得極其快捷,并且節(jié)省內(nèi)存和硬盤空間。
日志記錄:Docker將會(huì)收集和記錄每個(gè)進(jìn)程容器的標(biāo)準(zhǔn)流(stdout/stderr/stdin),用于實(shí)時(shí)檢索或批量檢索。
變更管理:容器文件系統(tǒng)的變更可以提交到新的映像中,并可重復(fù)使用以創(chuàng)建更多的容器。無需使用模板或手動(dòng)配置。
交互式Shell:Docker可以分配一個(gè)虛擬終端并關(guān)聯(lián)到任何容器的標(biāo)準(zhǔn)輸入上,例如運(yùn)行一個(gè)一次性交互shell。
2. 比較 2.1 docker vs 傳統(tǒng)虛擬化技術(shù)作為一種新興的虛擬化方式,Docker 跟傳統(tǒng)的虛擬化方式(xen、kvm、vmware)相比具有眾多的優(yōu)勢(shì)。
首先,Docker 容器的啟動(dòng)可以在秒級(jí)實(shí)現(xiàn),這相比傳統(tǒng)的虛擬機(jī)方式要快得多。 其次,Docker 對(duì)系統(tǒng)資源的利用率很高,一臺(tái)主機(jī)上可以同時(shí)運(yùn)行數(shù)千個(gè) Docker 容器。容器除了運(yùn)行其中應(yīng)用外,基本不消耗額外的系統(tǒng)資源,使得應(yīng)用的性能很高,同時(shí)系統(tǒng)的開銷盡量小。傳統(tǒng)虛擬機(jī)方式運(yùn)行 10 個(gè)不同的應(yīng)用就要起 10 個(gè)虛擬機(jī),而Docker 只需要啟動(dòng) 10 個(gè)隔離的應(yīng)用即可。
具體說來,Docker 在如下幾個(gè)方面具有較大的優(yōu)勢(shì)。
- 更快速的交付和部署
對(duì)開發(fā)和運(yùn)維(devop)人員來說,最希望的就是一次創(chuàng)建或配置,可以在任意地方正常運(yùn)行。
開發(fā)者可以使用一個(gè)標(biāo)準(zhǔn)的鏡像來構(gòu)建一套開發(fā)容器,開發(fā)完成之后,運(yùn)維人員可以直接使用這個(gè)容器來部署代碼。 Docker 可以快速創(chuàng)建容器,快速迭代應(yīng)用程序,并讓整個(gè)過程全程可見,使團(tuán)隊(duì)中的其他成員更容易理解應(yīng)用程序是如何創(chuàng)建和工作的。 Docker 容器很輕很快!容器的啟動(dòng)時(shí)間是秒級(jí)的,大量地節(jié)約開發(fā)、測(cè)試、部署的時(shí)間。
更高效的虛擬化
Docker 容器的運(yùn)行不需要額外的 hypervisor 支持,它是內(nèi)核級(jí)的虛擬化,因此可以實(shí)現(xiàn)更高的性能和效率。
更輕松的遷移和擴(kuò)展
Docker 容器幾乎可以在任意的平臺(tái)上運(yùn)行,包括物理機(jī)、虛擬機(jī)、公有云、私有云、個(gè)人電腦、服務(wù)器等。 這種兼容性可以讓用戶把一個(gè)應(yīng)用程序從一個(gè)平臺(tái)直接遷移到另外一個(gè)。
更簡單的管理
使用 Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分發(fā)和更新,從而實(shí)現(xiàn)自動(dòng)化并且高效的管理。
對(duì)比傳統(tǒng)虛擬機(jī)總結(jié):
特性 | 容器 | 虛擬機(jī) |
---|---|---|
啟動(dòng) | 秒級(jí) | 分鐘級(jí) |
硬盤使用 | 一般為 MB | 一般為 GB |
性能 | 接近原生 | 弱于 |
系統(tǒng)支持量 | 單機(jī)支持上千個(gè)容器 | 一般幾十個(gè) |
Docker以Linux容器LXC為基礎(chǔ),實(shí)現(xiàn)輕量級(jí)的操作系統(tǒng)虛擬化解決方案。在LXC的基礎(chǔ)上Docker進(jìn)行了進(jìn)一步的封裝,讓用戶不需要去關(guān)心容器的管理,使得操作更為簡便,具體改進(jìn)有:
Portable deployment across machines
Docker提供了一種可移植的配置標(biāo)準(zhǔn)化機(jī)制,允許你一致性地在不同的機(jī)器上運(yùn)行同一個(gè)Container;而LXC本身可能因?yàn)椴煌瑱C(jī)器的不同配置而無法方便地移植運(yùn)行;
Application-centric
Docker以App為中心,為應(yīng)用的部署做了很多優(yōu)化,而LXC的幫助腳本主要是聚焦于如何機(jī)器啟動(dòng)地更快和耗更少的內(nèi)存;
Automatic build
Docker為App提供了一種自動(dòng)化構(gòu)建機(jī)制(Dockerfile),包括打包,基礎(chǔ)設(shè)施依賴管理和安裝等等;
Versioning
Docker提供了一種類似git的Container版本化的機(jī)制,允許你對(duì)你創(chuàng)建過的容器進(jìn)行版本管理,依靠這種機(jī)制,你還可以下載別人創(chuàng)建的Container,甚至像git那樣進(jìn)行合并;
Component reuse
Docker Container是可重用的,依賴于版本化機(jī)制,你很容易重用別人的Container(叫Image),作為基礎(chǔ)版本進(jìn)行擴(kuò)展;
Sharing
Docker Container是可共享的,有點(diǎn)類似github一樣,Docker有自己的INDEX,你可以創(chuàng)建自己的Docker用戶并上傳和下載Docker Image;
Tool ecosystem
Docker提供了很多的工具鏈,形成了一個(gè)生態(tài)系統(tǒng);這些工具的目標(biāo)是自動(dòng)化、個(gè)性化和集成化,包括對(duì)PAAS平臺(tái)的支持等。
Docker作為一個(gè)開源的應(yīng)用容器引擎,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的容器中,然后發(fā)布到任何流行的 Linux 機(jī)器上,也可以實(shí)現(xiàn)虛擬化。Docker可以自動(dòng)化打包和部署任何應(yīng)用、創(chuàng)建一個(gè)輕量級(jí)私有PaaS云、搭建開發(fā)測(cè)試環(huán)境、部署可擴(kuò)展的Web應(yīng)用等。這決定了它在企業(yè)中的應(yīng)用場(chǎng)景是有限的,Docker將自己定位為“分發(fā)應(yīng)用的開放平臺(tái)”,其網(wǎng)站上也明確地提到了Docker的典型應(yīng)用場(chǎng)景:
Automating the packaging and deployment of applications
Creation of lightweight, private PAAS environments
Automated testing and continuous integration/deployment
Deploying and scaling web apps, databases and backend services
對(duì)應(yīng)用進(jìn)行自動(dòng)打包和部署,創(chuàng)建輕量、私有的PAAS環(huán)境,自動(dòng)化測(cè)試和持續(xù)整合與部署,部署和擴(kuò)展Web應(yīng)用、數(shù)據(jù)庫和后端服務(wù)。
平臺(tái)即服務(wù)一般與大數(shù)據(jù)量系統(tǒng)同在,反觀當(dāng)前我司各IT系統(tǒng),可以在以下情形下使用docker替代方案:
結(jié)合vagrant或supervisor,搭建統(tǒng)一的開發(fā)、測(cè)試環(huán)境
多個(gè)開發(fā)人員共同進(jìn)行一個(gè)項(xiàng)目,就必須保持開發(fā)環(huán)境完全一致,部署到測(cè)試環(huán)境、正式環(huán)境后,最好都是同一套環(huán)境,通過容器來保存狀態(tài),分發(fā)給開發(fā)人員或部署,可以讓“代碼在我機(jī)子上運(yùn)行沒有問題”這種說辭將成為歷史。
對(duì)memcached、mysql甚至tomcat,打包成一個(gè)個(gè)容器,避免重復(fù)配置
比如將一個(gè)穩(wěn)定版本的、已配置完善的mysql,固化在一個(gè)鏡像中,假如有新的環(huán)境要用到mysql數(shù)據(jù)庫,便不需要重新安裝、配置,而只需要啟動(dòng)一個(gè)容器瞬間完成。tomcat應(yīng)用場(chǎng)景更多,可以將不同版本的jvm和tomcat打包分發(fā),應(yīng)用于多tomcat集群,或在測(cè)試服務(wù)器上隔離多個(gè)不同運(yùn)行環(huán)境要求的測(cè)試應(yīng)用(例如舊系統(tǒng)采用的是jdk6,新系統(tǒng)在jdk7上開發(fā),但共用同一套測(cè)試環(huán)境)。
docker不足
LXC是基于cgroup等linux kernel功能的,因此container的guest系統(tǒng)只能是linux base的
隔離性相比KVM之類的虛擬化方案還是有些欠缺,所有container公用一部分的運(yùn)行庫
網(wǎng)絡(luò)管理相對(duì)簡單,主要是基于namespace隔離
cgroup的cpu和cpuset提供的cpu功能相比KVM的等虛擬化方案相比難以度量(所以dotcloud主要是安內(nèi)存收費(fèi))
container隨著用戶進(jìn)程的停止而銷毀,container中的log等用戶數(shù)據(jù)不便收集
另外,Docker是面向應(yīng)用的,其終極目標(biāo)是構(gòu)建PAAS平臺(tái),而現(xiàn)有虛擬機(jī)主要目的是提供一個(gè)靈活的計(jì)算資源池,是面向架構(gòu)的,其終極目標(biāo)是構(gòu)建一個(gè)IAAS平臺(tái),所以它不能替代傳統(tǒng)虛擬化解決方案。目前在容器可管理性方面,對(duì)于方便運(yùn)維,提供UI來管理監(jiān)控各個(gè)containers的功能還不足,還都是第三方實(shí)現(xiàn)如DockerUI、Dockland、Shipyard等。
4. docker組成部分Docker使用客戶端-服務(wù)器(client-server)架構(gòu)模式。Docker客戶端會(huì)與Docker守護(hù)進(jìn)程進(jìn)行通信。Docker守護(hù)進(jìn)程會(huì)處理復(fù)雜繁重的任務(wù),例如建立、運(yùn)行、發(fā)布你的Docker容器。Docker客戶端和守護(hù)進(jìn)程可以運(yùn)行在同一個(gè)系統(tǒng)上,當(dāng)然你也可以使用Docker客戶端去連接一個(gè)遠(yuǎn)程的Docker守護(hù)進(jìn)程。Docker客戶端和守護(hù)進(jìn)程之間通過socket或者RESTful API進(jìn)行通信。
更多內(nèi)容請(qǐng)參考:Docker核心技術(shù)預(yù)覽 及docker常用管理命令。
4.1 images(鏡像)Docker 鏡像就是一個(gè)只讀的模板。例如,一個(gè)鏡像可以包含一個(gè)完整的 ubuntu 操作系統(tǒng)環(huán)境,里面僅安裝了 Apache 或用戶需要的其它應(yīng)用程序。
鏡像可以用來創(chuàng)建 Docker 容器。
Docker 提供了一個(gè)很簡單的機(jī)制來創(chuàng)建鏡像或者更新現(xiàn)有的鏡像,用戶甚至可以直接從其他人那里下載一個(gè)已經(jīng)做好的鏡像來直接使用。
Docker 利用容器來運(yùn)行應(yīng)用。容器是從鏡像創(chuàng)建的運(yùn)行實(shí)例。它可以被啟動(dòng)、開始、停止、刪除。每個(gè)容器都是相互隔離的、保證安全的平臺(tái)。可以把容器看做是一個(gè)簡易版的 Linux 環(huán)境(包括root用戶權(quán)限、進(jìn)程空間、用戶空間和網(wǎng)絡(luò)空間等)和運(yùn)行在其中的應(yīng)用程序。
鏡像是只讀的,容器在啟動(dòng)的時(shí)候創(chuàng)建一層可寫層作為最上層。
倉庫是集中存放鏡像文件的場(chǎng)所。有時(shí)候會(huì)把倉庫和倉庫注冊(cè)服務(wù)器(Registry)混為一談,并不嚴(yán)格區(qū)分。實(shí)際上,倉庫注冊(cè)服務(wù)器上往往存放著多個(gè)倉庫,每個(gè)倉庫中又包含了多個(gè)鏡像,每個(gè)鏡像有不同的標(biāo)簽(tag)。
4.3.1 公開倉庫docker團(tuán)隊(duì)控制的top-level的頂級(jí)repository,即Docker Hub,存放了數(shù)量龐大的鏡像供用戶下載,任何人都能讀取,里面包含了許多常用的鏡像,如ubuntu, mysql ,redis, python等。
4.3.2 個(gè)人公共庫個(gè)人公共庫也是被托管在Docker Hub上,網(wǎng)絡(luò)上的其它用戶也可以pull你的倉庫(如docker pull seanloook/centos6)你可以在修改完自己的container之后,通過commit命令把它變成本地的一個(gè)image,push到自己的個(gè)人公共庫。(在此之前你需要docker login登錄,或者vi ~/.dockercfg。)
從鏡像運(yùn)行出一個(gè)容器 docker run -t -i 68edf809afe7 /bin/bash 記錄下CONTAINER ID docker ps -l CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1528136ff541 172.29.88.222:5000/centos6:latest /bin/bash 40 minutes ago Exited (0) .. sad_mestorf 從將容器提交成一個(gè)新的image (format is "sudo docker commit/ ") # docker commit -m " new images /docker.sean " -a "docker New" fcbd0a5348ca seanloook/centos6:test_tag_sean fe022762070b09866eaab47bc943ccb796e53f3f416abf3f2327481b446a9503 docker images可以看到這個(gè)新的鏡像 # docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE seanloook/centos6 test_tag_sean fe022762070b About an hour ago 212.7 MB sean:5000/library/centos6 latest 68edf809afe7 3 weeks ago 212.7 MB
在你commit為一個(gè)image后,通過push可以推送到個(gè)人公共registry中。此時(shí)需要login后才能push(當(dāng)然沒有設(shè)定login的Username,在第一次push時(shí)也會(huì)提示輸入),接下來比較有意思。
# docker login https://index.docker.io/v1/ Username: seanloook Password: Email: [email protected] Login Succeeded
如果你已經(jīng)有docker官網(wǎng)的賬號(hào),則只需要輸入正確的用戶名和密碼就可以登錄,郵箱不做驗(yàn)證;
如果所輸入的Username不存在,則這一步便是自動(dòng)從官網(wǎng)創(chuàng)建一個(gè)賬號(hào),并發(fā)送一封確認(rèn)郵件,以后也可以從https://hub.docker.com/repos/ 登錄。(是不是太簡單了?)
login的同時(shí),也會(huì)在~/.dockercfg中加入認(rèn)證信息
# cat ~/.dockercfg {"https://index.docker.io/v1/":{"auth":"c2Vhbmxvb29rOk15UGFzc3dvcmQ=","email":"[email protected]"}}
其中auth=base64(username:password),base64編碼與解碼。
保存到個(gè)人公共庫上,push可以是repos,格式docker push
# docker push seanloook/centos6:test_tag_sean The push refers to a repository [seanloook/centos6] (len: 1) Sending image list Pushing repository seanloook/centos6 (1 tags) 511136ea3c5a: Image already pushed, skipping 5b12ef8fd570: Image already pushed, skipping 68edf809afe7: Image already pushed, skipping fe022762070b: Image successfully pushed Pushing tag for rev [fe022762070b] on {https://cdn-registry-1.docker.io/v1/repositories/seanloook/centos6/tags/test_tag_sean}
上面的push操作也可以是docker push seanloook/centos6(但不能是docker push fe022762070b)。
這些鏡像其他人也可以搜索得到docker search seanloo。
4.3.3 私有倉庫首先與另外一種倉庫區(qū)分——Docker Hub Private Repository,它簡單理解為公網(wǎng)上的個(gè)人私有庫,與上面的個(gè)人公共庫相對(duì)應(yīng),在Docker Hub上Create Repository時(shí)選擇Private便是,只有你自己才可以讀寫。
這里所說的私有倉庫是指自己在本地服務(wù)器上搭建的專屬自己的內(nèi)部倉庫docker-registry,俗稱“私服”,供無法訪問互聯(lián)網(wǎng)的內(nèi)部網(wǎng)絡(luò)使用,或者鏡像到本地一份以加快pull、push的速度。
它與公共倉庫最明顯的區(qū)分就是repository的命名,如必須使用帶.的主機(jī)名或域名,后面必須接:port,如sean.tp-link.net:5000/centos6:your_tag_name,而公共倉庫第一個(gè)斜杠前表示的是登錄用戶名。命名關(guān)系到推送到哪個(gè)服務(wù)器的哪個(gè)位置,更過內(nèi)容可以關(guān)注搭建docker內(nèi)網(wǎng)私服(docker-registry with nginx&ssl on centos)。
4.4 運(yùn)行一個(gè)容器的內(nèi)部過程docker client告訴docker daemon運(yùn)行一個(gè)容器,例如:docker run -i -t ubuntu /bin/bash
讓我們分解一下這個(gè)命令,docker client啟動(dòng)使用一個(gè)二進(jìn)制的docker命令,最小的docker client需要你告訴docker daemon你的容器是從哪個(gè)docker鏡像構(gòu)建的,你希望在容器內(nèi)部運(yùn)行哪個(gè)命令。所以啟動(dòng)過程如下:
Pulling the ubuntu image
docker檢查是否存在ubuntu鏡像,如果本地不存在ubuntu鏡像,則docker會(huì)到docker index下載。
Creates a new container
利用鏡像創(chuàng)建容器
Allocates a filesystem and mounts a read-write layer
為鏡像創(chuàng)建文件系統(tǒng)層和read-write層
Allocates a network / bridge interface
為容器創(chuàng)建網(wǎng)絡(luò)接口,使容器和本地機(jī)器可以通訊
Sets up an IP address
在地址池中為容器分配一個(gè)可用的IP地址
Executes a process that you specify
運(yùn)行你的應(yīng)用
Captures and provides application output
連接log的標(biāo)準(zhǔn)輸入、輸出、錯(cuò)誤,以使你直到你的應(yīng)用是否正常運(yùn)行
深入淺出Docker(一):Docker核心技術(shù)預(yù)覽
Docker源碼分析(一):Docker架構(gòu)
Docker Architecture based on v1.3
Docker簡介與入門
原文鏈接地址:http://seanlook.com/2014/12/18/docker-introduction/
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/26370.html
摘要:容器鏡像運(yùn)行后,此時(shí)就實(shí)例化了一個(gè)容器。側(cè)重的是應(yīng)用級(jí)別,而虛擬機(jī)是徹底隔離整個(gè)運(yùn)行環(huán)境。方便交付將應(yīng)用以及運(yùn)行環(huán)境打包成一個(gè)鏡像,交付更簡單高效。下載地址點(diǎn)擊運(yùn)行即可一如既往的下一步下一步完成安裝。 Docker是什么 Docker是一款由DotCloud公司(現(xiàn)改名為Docker)基于Go語言開發(fā)的開源的應(yīng)用容器引擎,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的容器中,然后發(fā)...
摘要:概述是一個(gè)用來定義和運(yùn)行復(fù)雜應(yīng)用的工具。使用,用戶通過來進(jìn)行構(gòu)建。使用,不再需要使用腳本來啟動(dòng)容器。在配置文件中,所有的容器通過來定義,然后通過腳本來啟動(dòng),停止和重啟應(yīng)用,和應(yīng)用中的服務(wù)以及所有依賴服務(wù)的容器。 概述 Docker Compose是一個(gè)用來定義和運(yùn)行復(fù)雜應(yīng)用的Docker工具。使用Compose,你可以在一個(gè)文件中定義一個(gè)多容器應(yīng)用,然后使用一條命令來啟動(dòng)你的應(yīng)用,完成...
摘要:概述是一個(gè)用來定義和運(yùn)行復(fù)雜應(yīng)用的工具。使用,用戶通過來進(jìn)行構(gòu)建。使用,不再需要使用腳本來啟動(dòng)容器。在配置文件中,所有的容器通過來定義,然后通過腳本來啟動(dòng),停止和重啟應(yīng)用,和應(yīng)用中的服務(wù)以及所有依賴服務(wù)的容器。 概述 Docker Compose是一個(gè)用來定義和運(yùn)行復(fù)雜應(yīng)用的Docker工具。使用Compose,你可以在一個(gè)文件中定義一個(gè)多容器應(yīng)用,然后使用一條命令來啟動(dòng)你的應(yīng)用,完成...
摘要:本系列教程翻譯自,系列共有九篇,本文譯自第一篇。,一種新的容器化技術(shù),因?yàn)檩p量級(jí)和便攜化而受到廣泛關(guān)注。本篇文章是系列教程的第一篇。鏡像只讀的容器模板,簡言之就是系統(tǒng)鏡像文件。首先,向發(fā)出請(qǐng)求創(chuàng)建一個(gè)鏡像并且指定容器內(nèi)要運(yùn)行的命令。 本系列教程翻譯自 Flux7 Docker Tutorial Series,系列共有九篇,本文譯自第一篇 Part 1: An Introduction。...
摘要:本系列教程翻譯自,系列共有九篇,本文譯自第一篇。,一種新的容器化技術(shù),因?yàn)檩p量級(jí)和便攜化而受到廣泛關(guān)注。本篇文章是系列教程的第一篇。鏡像只讀的容器模板,簡言之就是系統(tǒng)鏡像文件。首先,向發(fā)出請(qǐng)求創(chuàng)建一個(gè)鏡像并且指定容器內(nèi)要運(yùn)行的命令。 本系列教程翻譯自 Flux7 Docker Tutorial Series,系列共有九篇,本文譯自第一篇 Part 1: An Introduction。...
摘要:前置條件這不是一個(gè)入門課程。此課程為至少有六個(gè)月網(wǎng)站開發(fā)經(jīng)驗(yàn)的高級(jí)入門者設(shè)置。主題資源目標(biāo)這部分結(jié)束,具備以下能力。。。第一部分完整代碼依賴第一部分依賴耗時(shí)一章需要幾個(gè)小時(shí)到一整天??沼啻髩K時(shí)間來完成一章,特別是,,這些較難的部分。 在第一部分, 你學(xué)到如何使用 Docker 來創(chuàng)建一個(gè)基于python, postgres, 和 flask web 框架的 RESTful API 可重...
閱讀 3328·2021-11-25 09:43
閱讀 1313·2021-11-23 09:51
閱讀 3617·2021-10-11 11:06
閱讀 3728·2021-08-31 09:41
閱讀 3606·2019-08-30 15:53
閱讀 3516·2019-08-30 15:53
閱讀 974·2019-08-30 15:43
閱讀 3315·2019-08-29 14:02