什么是Docker?
Docker是一個(gè)開(kāi)放源代碼軟件專(zhuān)案,讓?xiě)?yīng)用程序部署在軟件容器下的工作可以自動(dòng)化進(jìn)行硼讽,借此在Linux操作系統(tǒng)上鞋吉,提供一個(gè)額外的軟件抽象層商蕴,以及操作系統(tǒng)層虛擬化的自動(dòng)管理機(jī)制,Docker利用Linux核心中的資源分離機(jī)制造壮,例如Cgroups,以及Linux核心命令空間(name space)渡讼,來(lái)建立獨(dú)立的軟件容器(containers).這可以在單一Linux實(shí)體下的運(yùn)作,避免啟動(dòng)一個(gè)虛擬機(jī)器造成的額外負(fù)擔(dān)耳璧。linux核心對(duì)命名空間的支援完全隔離了工作環(huán)境中應(yīng)用程序的視野成箫,包括進(jìn)程樹(shù)、網(wǎng)絡(luò)旨枯、用戶(hù)ID與掛載文件系統(tǒng)蹬昌,而核心的cgroup提供資源的隔離,包括cpu攀隔、內(nèi)存皂贩、block/O與網(wǎng)絡(luò)。
docker和傳統(tǒng)虛擬化方式的不同
為什么要用Docker
1.更快速的交付和部署
2.更輕松的遷移和擴(kuò)展
3.更簡(jiǎn)單的管理
Docker的基本概念
鏡像(Image)
Docker鏡像就是用來(lái)生成Docker容器的一個(gè)只讀的模板昆汹。
docker根據(jù)Docker鏡像來(lái)生成的一個(gè)運(yùn)行環(huán)境明刷。
容器(Container)
容器是從鏡像創(chuàng)建的運(yùn)行實(shí)例。它可以被啟動(dòng)满粗、開(kāi)始停止辈末,刪除。每個(gè)容器都是相互隔離的败潦、保證安全的平臺(tái)本冲。
可以把容器看做一個(gè)簡(jiǎn)易版的Linux環(huán)境(包括root用戶(hù)權(quán)限、進(jìn)程空間劫扒、用戶(hù)空間和網(wǎng)絡(luò)空間等)和運(yùn)行在其中的應(yīng)用程序檬洞。
鏡像是只讀的,容器在啟動(dòng)的時(shí)候創(chuàng)建一層可寫(xiě)層作為最上層沟饥。
倉(cāng)庫(kù)(Repository)
倉(cāng)庫(kù)是集中存放鏡像文件的場(chǎng)所添怔。
倉(cāng)庫(kù)分為公開(kāi)倉(cāng)庫(kù)(Public)和私有倉(cāng)庫(kù)(Private).
最大的公開(kāi)倉(cāng)庫(kù)是Dokcer Hub,存放了數(shù)量龐大的鏡像供用戶(hù)下載湾戳。
私有倉(cāng)庫(kù)是本地網(wǎng)絡(luò)內(nèi)創(chuàng)建的一個(gè)私有倉(cāng)庫(kù)。
用戶(hù)創(chuàng)建了鏡像后广料,可用Docker push命令將鏡像上傳到倉(cāng)庫(kù)砾脑。下次在其他機(jī)器上使用時(shí)再pull下來(lái)就行了.
Docker安裝
centos ubuntu
yum update apt-get update
yum install docker.io apt-get install docker.io
如果操作系統(tǒng)內(nèi)核版本過(guò)低,需要升級(jí)操作系統(tǒng)內(nèi)核艾杏。
通過(guò)uname –r命令可以查看操作系統(tǒng)內(nèi)核韧衣。建議內(nèi)核升級(jí)到3.10以上。
Linux內(nèi)核源碼可在www.kernel.org 上下載购桑。
docker啟動(dòng)
1.service docker start
2.修改配置文件
Centos:/etc/sysconfig/docker
Ubuntu:/etc/default/docker
獲取docker鏡像
1.docker search centos
在docker hub上搜索鏡像畅铭,部分結(jié)果如下
docker基本操作
1.docker images 列出本地鏡像
2.docker run -t -i docker.io/centos:latest /bin/bash
使用docker.io/centos:latest啟動(dòng)一個(gè)容器
3.docker commit 提交修改后的鏡像
docker數(shù)據(jù)管理
docker內(nèi)部及容器之間如果管理數(shù)據(jù)?
主要有兩種方式:
1.數(shù)據(jù)卷(Data volumes)
2.數(shù)據(jù)卷容器(Datavolume containers)
掛載一個(gè)主機(jī)目錄作為數(shù)據(jù)卷
Docker run -d --name tomcat -v /var/logs/tomcat:/home/tomcat/logs/ docker.io/centos:latest
數(shù)據(jù)卷容器
如果有一些持續(xù)更新的數(shù)據(jù)需要在容器之間共享勃蜘,最好創(chuàng)建數(shù)據(jù)卷容器硕噩。
數(shù)據(jù)卷容器,就是專(zhuān)門(mén)提供數(shù)據(jù)卷供其他容器掛載的容器缭贡。
在其他容器中用 --volumes-from來(lái)掛載
我的Dokcer鏡像設(shè)計(jì)
關(guān)于docker的一些問(wèn)題
什么樣的應(yīng)用場(chǎng)景適合使用docker部署炉擅?
什么服務(wù)應(yīng)該放到Docker上?
怎樣保證docker中的數(shù)據(jù)安全性阳惹?
怎樣保證生產(chǎn)環(huán)境的穩(wěn)定性以及故障的快速排除能力谍失?
怎樣設(shè)計(jì)監(jiān)控系統(tǒng)?
應(yīng)用遷移怎樣保證數(shù)據(jù)同步穆端?