服務(wù)器
1.0引入
1.1docker是什么?
docker 最初是 dotcloud 公司創(chuàng)始人 solomon hykes 在法國(guó)期間發(fā)起的一個(gè)公司內(nèi)部項(xiàng)目,于 2013 年 3 月以 apache 2.0 授權(quán)協(xié)議開(kāi)源,主要項(xiàng)目代碼在 github 上進(jìn)行維護(hù)。
docker 使用 google 公司推出的 go 語(yǔ)言 進(jìn)行開(kāi)發(fā)實(shí)現(xiàn)。
docker是linux容器的一種封裝,提供簡(jiǎn)單易用的容器使用接口。它是最流行的linux容器解決方案。
docker的接口相當(dāng)簡(jiǎn)單,用戶可以方便的創(chuàng)建、銷毀容器。
docker將應(yīng)用程序與程序的依賴,打包在一個(gè)文件里面。運(yùn)行這個(gè)文件就會(huì)生成一個(gè)虛擬容器。
程序運(yùn)行在虛擬容器里,如同在真實(shí)物理機(jī)上運(yùn)行一樣,有了docker,就不用擔(dān)心環(huán)境問(wèn)題了。
1.2應(yīng)用場(chǎng)景
web應(yīng)用的自動(dòng)化打包和發(fā)布
自動(dòng)化測(cè)試和持續(xù)集成、發(fā)布
在服務(wù)型環(huán)境中部署和調(diào)整數(shù)據(jù)庫(kù)或其他應(yīng)用
1.3區(qū)別
1,物理機(jī)
二,虛擬機(jī)
三,docker容器
1.4docker的三大概念及優(yōu)勢(shì)
1.鏡像image
2.容器container
3.倉(cāng)庫(kù)repository
docker容易優(yōu)勢(shì)
1. 更高效的利用系統(tǒng)資源
由于容器不需要進(jìn)行硬件虛擬以及運(yùn)行完整操作系統(tǒng)等額外開(kāi)銷,docker 對(duì)系統(tǒng) 資源的利用率更高。
無(wú)論是應(yīng)用執(zhí)行速度、內(nèi)存損耗或者文件存儲(chǔ)速度,都要比傳 統(tǒng)虛擬機(jī)技術(shù)更高效。因此,相比虛擬機(jī)技術(shù),一個(gè)相同配置的主機(jī),往往可以運(yùn) 行更多數(shù)量的應(yīng)用。
2. 更快速的啟動(dòng)時(shí)間
傳統(tǒng)的虛擬機(jī)技術(shù)啟動(dòng)應(yīng)用服務(wù)往往需要數(shù)分鐘,而 docker 容器應(yīng)用,由于直接 運(yùn)行于宿主內(nèi)核,無(wú)需啟動(dòng)完整的操作系統(tǒng),因此可以做到秒級(jí)、甚至毫秒級(jí)的啟 動(dòng)時(shí)間。大大的節(jié)約了開(kāi)發(fā)、測(cè)試、部署的時(shí)間。
3. 一致的運(yùn)行環(huán)境
開(kāi)發(fā)過(guò)程中一個(gè)常見(jiàn)的問(wèn)題是環(huán)境一致性問(wèn)題。由于開(kāi)發(fā)環(huán)境、測(cè)試環(huán)境、生產(chǎn)環(huán) 境不一致,導(dǎo)致有些 bug 并未在開(kāi)發(fā)過(guò)程中被發(fā)現(xiàn)。
而 docker 的鏡像提供了除內(nèi) 核外完整的運(yùn)行時(shí)環(huán)境,確保了應(yīng)用運(yùn)行環(huán)境一致性,從而不會(huì)再出現(xiàn) “這段代碼 在我機(jī)器上沒(méi)問(wèn)題啊” 這類問(wèn)題。
4. 持續(xù)交付和部署
對(duì)開(kāi)發(fā)和運(yùn)維(devops)人員來(lái)說(shuō),最希望的就是一次創(chuàng)建或配置,可以在任意 地方正常運(yùn)行。
使用 docker 可以通過(guò)定制應(yīng)用鏡像來(lái)實(shí)現(xiàn)持續(xù)集成、持續(xù)交付、部署。開(kāi)發(fā)人員 可以通過(guò) dockerfile 來(lái)進(jìn)行鏡像構(gòu)建,并結(jié)合 持續(xù)集成(continuous integration) 系 統(tǒng)進(jìn)行集成測(cè)試,
而運(yùn)維人員則可以直接在生產(chǎn)環(huán)境中快速部署該鏡像,甚至結(jié)合 持續(xù)部署(continuous delivery/deployment) 系統(tǒng)進(jìn)行自動(dòng)部署。
而且使用 dockerfile 使鏡像構(gòu)建透明化,不僅僅開(kāi)發(fā)團(tuán)隊(duì)可以理解應(yīng)用運(yùn)行環(huán) 境,也方便運(yùn)維團(tuán)隊(duì)理解應(yīng)用運(yùn)行所需條件,幫助更好的生產(chǎn)環(huán)境中部署該鏡像。
5. 更輕松的遷移
由于 docker 確保了執(zhí)行環(huán)境的一致性,使得應(yīng)用的遷移更加容易。docker 可以在 很多平臺(tái)上運(yùn)行,無(wú)論是物理機(jī)、虛擬機(jī)、公有云、私有云,甚至是筆記本,其運(yùn) 行結(jié)果是一致的。
因此用戶可以很輕易的將在一個(gè)平臺(tái)上運(yùn)行的應(yīng)用,遷移到另一 個(gè)平臺(tái)上,而不用擔(dān)心運(yùn)行環(huán)境的變化導(dǎo)致應(yīng)用無(wú)法正常運(yùn)行的情況。
2.0 docker安裝
系統(tǒng)環(huán)境:docker最低支持centos7且在64位平臺(tái)上,內(nèi)核版本在3.10以上
版本:社區(qū)版,企業(yè)版(包含了一些收費(fèi)服務(wù))
官方版安裝教程(英文)
博主版安裝教程:
# 安裝dockeryum install docker# 啟動(dòng)docker systemctl start/status docker # 查看docker啟動(dòng)狀態(tài)docker version 配置加速器
簡(jiǎn)介:daocloud 加速器是廣受歡迎的 docker 工具,解決了國(guó)內(nèi)用戶訪問(wèn) docker hub 緩慢的問(wèn)題。daocloud 加速器結(jié)合國(guó)內(nèi)的 cdn 服務(wù)與協(xié)議層優(yōu)化,成倍的提升了下載速度。
daocloud官網(wǎng)
# 一條命令加速(記得重啟docker)curl -ssl https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://95822026.m.daocloud.io3.0 docker基礎(chǔ)命令
docker –help(中文注解)
usage:docker [options] command [arg...] docker daemon [ --help | ... ] docker [ --help | -v | --version ] aself-sufficient runtime for containers. options: --config=~/.docker location of client config files #客戶端配置文件的位置 -d, --debug=false enable debug mode #啟用debug調(diào)試模式 -h, --host=[] daemon socket(s) to connect to #守護(hù)進(jìn)程的套接字(socket)連接 -h, --help=false print usage #打印使用 -l, --log-level=info set the logging level #設(shè)置日志級(jí)別 --tls=false use tls; implied by--tlsverify # --tlscacert=~/.docker/ca.pem trust certs signed only by this ca #信任證書(shū)簽名ca --tlscert=~/.docker/cert.pem path to tls certificate file #tls證書(shū)文件路徑 --tlskey=~/.docker/key.pem path to tls key file #tls密鑰文件路徑 --tlsverify=false use tls and verify the remote #使用tls驗(yàn)證遠(yuǎn)程 -v, --version=false print version information and quit #打印版本信息并退出 commands: attach attach to a running container #當(dāng)前shell下attach連接指定運(yùn)行鏡像 build build an image from a dockerfile #通過(guò)dockerfile定制鏡像 commit create a new image from a container\\\'s changes #提交當(dāng)前容器為新的鏡像 cp copy files/folders from a container to a hostdir or to stdout #從容器中拷貝指定文件或者目錄到宿主機(jī)中 create create a new container #創(chuàng)建一個(gè)新的容器,同run 但不啟動(dòng)容器 diff inspect changes on a container\\\'s filesystem #查看docker容器變化 events get real time events from the server#從docker服務(wù)獲取容器實(shí)時(shí)事件 exec run a command in a running container#在已存在的容器上運(yùn)行命令 export export a container\\\'s filesystem as a tar archive #導(dǎo)出容器的內(nèi)容流作為一個(gè)tar歸檔文件(對(duì)應(yīng)import) history show the history of an image #展示一個(gè)鏡像形成歷史 images list images #列出系統(tǒng)當(dāng)前鏡像 import import the contents from a tarball to create a filesystem image #從tar包中的內(nèi)容創(chuàng)建一個(gè)新的文件系統(tǒng)映像(對(duì)應(yīng)export) info display system-wide information #顯示系統(tǒng)相關(guān)信息 inspect return low-level information on a container or image #查看容器詳細(xì)信息 kill kill a running container #kill指定docker容器 load load an image from a tar archive or stdin #從一個(gè)tar包中加載一個(gè)鏡像(對(duì)應(yīng)save) login register or log in to a docker registry#注冊(cè)或者登陸一個(gè)docker源服務(wù)器 logout log out from a docker registry #從當(dāng)前docker registry退出 l