這篇文章主要介紹“docker的優(yōu)點(diǎn)有哪些”,在日常操作中,相信很多人在docker的優(yōu)點(diǎn)有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對(duì)大家解答”docker的優(yōu)點(diǎn)有哪些”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!
公司主營業(yè)務(wù):網(wǎng)站建設(shè)、做網(wǎng)站、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)公司推出永德免費(fèi)做網(wǎng)站回饋大家。
docker簡介
docker是一個(gè)開源的容器引擎,它有助于更快地交付應(yīng)用。docker可將應(yīng)用程序和基礎(chǔ)設(shè)施層隔離,并且能將基礎(chǔ)設(shè)施當(dāng)作程序一樣進(jìn)行管理。
使用docker可更快地打包、測試以及部署應(yīng)用程序,并可以縮短從編寫到部署運(yùn)行代碼的周期。
docker的優(yōu)點(diǎn)如下:
1、簡化程序
docker讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的容器中,然后發(fā)布到任何流行的linux機(jī)器上,便可以實(shí)現(xiàn)虛擬化。docker改變了虛擬化的方式,使開發(fā)者可以直接將自己的成果放入docker中進(jìn)行管理。方便快捷已經(jīng)是docker的最大優(yōu)勢,過去需要用數(shù)天乃至數(shù)周的任務(wù),在docker容器的處理下,只需要數(shù)秒就能完成。
2、避免選擇恐懼癥
如果你有選擇恐懼癥,還是資深患者。docker幫你打包你的糾結(jié)!比如docker鏡像;docker鏡像中包含了運(yùn)行環(huán)境和配置,所以docker可以簡化部署多種應(yīng)用實(shí)例工作。比如web應(yīng)用、后臺(tái)應(yīng)用、數(shù)據(jù)庫應(yīng)用、大數(shù)據(jù)應(yīng)用比如hadoop集群、消息隊(duì)列等等都可以打包成一個(gè)鏡像部署。
3、節(jié)省開支
一方面,云計(jì)算時(shí)代到來,使開發(fā)者不必為了追求效果而配置高額的硬件,docker改變了高性能必然高價(jià)格的思維定勢。docker與云的結(jié)合,讓云空間得到更充分的利用。不僅解決了硬件管理的問題,也改變了虛擬化的方式。
docker的架構(gòu)
docker daemon(docker守護(hù)進(jìn)程)
docker daemon是一個(gè)運(yùn)行在宿主機(jī)(docker-host)的后臺(tái)進(jìn)程。可通過 docker客戶端與之通信。
client( docker客戶端)
docker客戶端是docker的用戶界面,它可以接受用戶命令和配置標(biāo)識(shí),并與docker daemon通信。圖中,docker build等都是docker的相關(guān)命令。
images(docker鏡像)
docker鏡像是一個(gè)只讀模板,它包含創(chuàng)建 docker容器的說明。它和系統(tǒng)安裝光盤有點(diǎn)像,使用系統(tǒng)安裝光盤可以安裝系統(tǒng),同理,使用docker鏡像可以運(yùn)行docker鏡像中的程序。
container(容器)
容器是鏡像的可運(yùn)行實(shí)例。鏡像和容器的關(guān)系有點(diǎn)類似于面向?qū)ο笾校惡蛯?duì)象的關(guān)系。可通過docker api或者cli命令來啟停、移動(dòng)、刪除容器。
registry
docker registry是一個(gè)集中存儲(chǔ)與分發(fā)鏡像的服務(wù)。構(gòu)建完 docker鏡像后,就可在當(dāng)前宿主機(jī)上運(yùn)行。但如果想要在其他機(jī)器上運(yùn)行這個(gè)鏡像,就需要手動(dòng)復(fù)制。此時(shí)可借助docker registry來避免鏡像的手動(dòng)復(fù)制。
一個(gè)docker registry可包含多個(gè)docker倉庫,每個(gè)倉庫可包含多個(gè)鏡像標(biāo)簽,每個(gè)標(biāo)簽對(duì)應(yīng)一個(gè)docker鏡像。這跟maven的倉庫有點(diǎn)類似,如果把docker registry比作maven倉庫的話,那么docker倉庫就可理解為某jar包的路徑,而鏡像標(biāo)簽則可理解為jar包的版本號(hào)。
docker registry可分為公有docker registry和私有docker registry。最常用的docker registry莫過于官方的docker hub,這也是默認(rèn)的docker registry。docker hub上存放著大量優(yōu)秀的鏡像,我們可使用docker命令下載并使用。
docker 的安裝
docker是一個(gè)開源的商業(yè)產(chǎn)品,有兩個(gè)版本:社區(qū)版(community edition,縮寫為 ce)和企業(yè)版(enterprise edition,縮寫為 ee)。企業(yè)版包含了一些收費(fèi)服務(wù),個(gè)人開發(fā)者一般用不到。下面的介紹都針對(duì)社區(qū)版。
docker ce的安裝請(qǐng)參考官方文檔,我們這里以centos為例:
1、docker要求 centos 系統(tǒng)的內(nèi)核版本高于3.10
通過uname -r 命令查看你當(dāng)前的內(nèi)核版本
# uname -r
查看操作系統(tǒng)版本
# cat /etc/redhat-release
2、卸載舊版本(如果安裝過舊版本的話)
# yum remove docker docker-common docker-selinux docker-engine
3、查看 yum 源地址
# yum repolist
4、設(shè)置yum源,并更新 yum 的包索引
# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# yum makecache fast
5、可以查看所有倉庫中所有docker版本,并選擇特定版本安裝
# yum list docker-ce --showduplicates | sort -r
6、安裝docker
# yum install docker-ce #由于repo中默認(rèn)只開啟stable倉庫,故這里安裝的是穩(wěn)定版18.03.1
# yum install
7、啟動(dòng)并加入開機(jī)啟動(dòng)
# systemctl start docker
# systemctl enable docker
8、驗(yàn)證安裝是否成功(有client和service兩部分表示docker安裝啟動(dòng)都成功了)
# docker version
9、卸載docker
# yum -y remove docker-engine
docker常用命令
鏡像相關(guān)命令
1、搜索鏡像
可使用docker search命令搜索存放在docker hub中的鏡像。執(zhí)行該命令后,docker就會(huì)在docker hub中搜索含有 tomcat 這個(gè)關(guān)鍵詞的鏡像倉庫。
以上列表包含五列,含義如下:
- name:鏡像倉庫名稱。
- description:鏡像倉庫描述。
- stars:鏡像倉庫收藏?cái)?shù),表示該鏡像倉庫的受歡迎程度,類似于 github的 stars0
- offical:表示是否為官方倉庫,該列標(biāo)記為[0k]的鏡像均由各軟件的官方項(xiàng)目組創(chuàng)建和維護(hù)。
- automated:表示是否是自動(dòng)構(gòu)建的鏡像倉庫。
2、下載鏡像
使用命令docker pull命令即可從docker registry上下載鏡像,執(zhí)行該命令后,docker會(huì)從 docker hub中的 tomcat倉庫下載最新版本的 tomcat鏡像。如果要下載指定版本則在tomcat后面加冒號(hào)指定版本,例如:docker pull tomcat:7
# docker pull tomcat:7
3、列出鏡像
使用docker images命令即可列出已下載的鏡像
# docker images
以上列表含義如下
- repository:鏡像所屬倉庫名稱。
- tag:鏡像標(biāo)簽。默認(rèn)是 latest,表示最新。
- image id:鏡像 id,表示鏡像唯一標(biāo)識(shí)。
- created:鏡像創(chuàng)建時(shí)間。
- size: 鏡像大小。
4、刪除本地鏡像
使用docker rmi命令即可刪除指定鏡像
# docker rmi tomcat:7
容器相關(guān)命令
1、新建并啟動(dòng)容器
使用以下docker run命令即可新建并啟動(dòng)一個(gè)容器,該命令是最常用的命令,它有很多選項(xiàng),下面將列舉一些常用的選項(xiàng)。
-d選項(xiàng):表示后臺(tái)運(yùn)行
-p選項(xiàng):指定端口映射,
-- hostport:containerport
# docker run -d -p 8080:8080 tomcat:7
這樣就能啟動(dòng)一個(gè) tomcat 容器。在本例中,為docker run添加了兩個(gè)參數(shù),含義如下:
-d 后臺(tái)運(yùn)行
-p 宿主機(jī)端口:容器端口
這里是把 容器的8080 端口映射到 虛擬機(jī)的8080端口,通過虛擬機(jī)自帶的瀏覽器 訪問 127.0.0.1:8080 或者 物理機(jī)訪問 虛擬機(jī)的ip:8080 (192.168.126.128:8080)也可以訪問,都是一個(gè)意思。
訪問http://docker宿主機(jī) ip:8080/,將會(huì)看到tomcat的主界面如下:
需要注意的是,使用docker run命令創(chuàng)建容器時(shí),會(huì)先檢查本地是否存在指定鏡像。如果本地不存在該名稱的鏡像, docker就會(huì)自動(dòng)從docker hub下載鏡像并啟動(dòng)一個(gè) docker容器。
2、列出容器
用docker ps命令即可列出 正在運(yùn)行中的容器
# docker ps
如需列出所有容器(包括已停止的容器),可使用-a參數(shù)。該列表包含了7列,含義如下
- container_id:表示容器 id。
- image:表示鏡像名稱。
- command:表示啟動(dòng)容器時(shí)運(yùn)行的命令。
- created:表示容器的創(chuàng)建時(shí)間。
- status:表示容器運(yùn)行的狀態(tài)。up表示運(yùn)行中, exited表示已停止。
- ports:表示容器對(duì)外的端口號(hào)。
- names:表示容器名稱。該名稱默認(rèn)由 docker自動(dòng)生成,也可使用 docker run命令的--name選項(xiàng)自行指定。
3、停止容器
使用 docker stop命令,即可停止容器
# docker stop4dbf26d1624d
其中 4dbf26d1624d 是容器 id,當(dāng)然也可使用 docker stop容器名稱來停止指定容器
4、啟動(dòng)已停止的容器
使用docker run命令,即可新建并啟動(dòng)一個(gè)容器。對(duì)于已停止的容器,可使用 docker start命令來啟動(dòng)
# docker start4dbf26d1624d
5、查看容器日志
# docker container logs 4dbf26d1624d
6、進(jìn)入容器
使用docker exec命令用于進(jìn)入一個(gè)正在運(yùn)行的docker容器。如果docker run命令運(yùn)行容器的時(shí)候,沒有使用-it參數(shù),就要用這個(gè)命令進(jìn)入容器。一旦進(jìn)入了容器,就可以在容器的 shell 執(zhí)行命令了
# docker exec -it 4dbf26d1624d /bin/bash
退出容器
# exit
7、刪除容器
使用docker rm命令即可刪除指定容器
# docker rm4dbf26d1624d
該命令只能刪除已停止的容器,如需刪除正在運(yùn)行的容器,可使用-f參數(shù)
docker虛擬化原理
傳統(tǒng)虛擬化和容器技術(shù)結(jié)構(gòu)比較:
傳統(tǒng)虛擬化技術(shù)是在硬件層面實(shí)現(xiàn)虛擬化,增加了系統(tǒng)調(diào)用鏈路的環(huán)節(jié),有性能損耗;
容器虛擬化技術(shù)以共享kernel的方式實(shí)現(xiàn),幾乎沒有性能損耗。
到此,關(guān)于“docker的優(yōu)點(diǎn)有哪些”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!