Docker及Docker-Compose的實(shí)例用法
Docker是一個(gè)開(kāi)源的容器引擎,它有助于更快地交付應(yīng)用。方便快捷已經(jīng)是 Docker的最大優(yōu)勢(shì),過(guò)去需要用數(shù)天乃至數(shù)周的任務(wù),在Docker容器的處理下,只需要數(shù)秒就能完成。
架構(gòu)

- Docker daemon( Docker守護(hù)進(jìn)程):Docker daemon是一個(gè)運(yùn)行在宿主機(jī)( DOCKER-HOST)的后臺(tái)進(jìn)程??赏ㄟ^(guò) Docker客戶端與之通信。
- Client( Docker客戶端):Docker客戶端是 Docker的用戶界面,它可以接受用戶命令和配置標(biāo)識(shí),并與 Docker daemon通信。圖中, docker build等都是 Docker的相關(guān)命令。
- Images( Docker鏡像):Docker鏡像是一個(gè)只讀模板,它包含創(chuàng)建 Docker容器的說(shuō)明。它和系統(tǒng)安裝光盤(pán)有點(diǎn)像,使用系統(tǒng)安裝光盤(pán)可以安裝系統(tǒng),同理,使用Docker鏡像可以運(yùn)行 Docker鏡像中的程序。
- Container(容器):容器是鏡像的可運(yùn)行實(shí)例。鏡像和容器的關(guān)系有點(diǎn)類(lèi)似于面向?qū)ο笾?,?lèi)和對(duì)象的關(guān)系??赏ㄟ^(guò) Docker API或者 CLI命令來(lái)啟停、移動(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來(lái)避免鏡像的手動(dòng)復(fù)制。一個(gè) Docker Registry可包含多個(gè) Docker倉(cāng)庫(kù),每個(gè)倉(cāng)庫(kù)可包含多個(gè)鏡像標(biāo)簽,每個(gè)標(biāo)簽對(duì)應(yīng)一個(gè) Docker鏡像。這跟 Maven的倉(cāng)庫(kù)有點(diǎn)類(lèi)似,如果把 Docker Registry比作Maven倉(cāng)庫(kù)的話,那么 Docker倉(cāng)庫(kù)就可理解為某jar包的路徑,而鏡像標(biāo)簽則可理解為jar包的版本號(hào)。Docker Registry可分為公有Docker Registry和私有Docker Registry。 最常用的DockerRegistry莫過(guò)于官網(wǎng)的Docker Hub, 這也是默認(rèn)的Docker Registry。 Docker Hub上存放著大量?jī)?yōu)秀的鏡像, 我們可使用Docker命令下載并使用。
安裝
按照菜鳥(niǎo)的步驟,使用yum安裝即可。
常用命令
鏡像相關(guān)
- docker search java:在Docker Hub(或阿里鏡像)倉(cāng)庫(kù)中搜索關(guān)鍵字(如java)的鏡像
- docker pull java:8:從倉(cāng)庫(kù)中下載鏡像,若要指定版本,則要在冒號(hào)后指定
- docker images:列出已經(jīng)下載的鏡像
- docker rmi java:刪除本地鏡像
- docker build:構(gòu)建鏡像
容器相關(guān)
- docker run -d -p 91:80 nginx :在后臺(tái)運(yùn)行nginx,若沒(méi)有鏡像則先下載,并將容器的80端口映射為宿主機(jī)的91端口。
- -d:后臺(tái)運(yùn)行
- -P:隨機(jī)端口映射
- -p:指定端口映射
- -net:網(wǎng)絡(luò)模式
- docker ps:列出運(yùn)行中的容器
- docker ps -a :列出所有的容器
- docker stop 容器id:停止容器
- docker kill 容器id:強(qiáng)制停止容器
- docker start 容器id:?jiǎn)?dòng)已停止的容器
- docker inspect 容器id:查看容器的所有信息
- docker container logs 容器id:查看容器日志
- docker top 容器id:查看容器里的進(jìn)程
- docker exec -it 容器id /bin/bash:進(jìn)入容器
- exit:退出容器
- docker rm 容器id:刪除已停止的容器
- docker rm -f 容器id:刪除正在運(yùn)行的容器
所有命令
- docker
- docker COMMAND --help
構(gòu)建鏡像
- 確定鏡像模板:如java、nginx
- 新建Dockerfile文件
- 使用Dockerfile的指令完善Dockerfile的內(nèi)容
- 在Dockerfile文件的所在路徑執(zhí)行docker build -t imageName:tag .,-t指定鏡像名稱,末尾的點(diǎn)標(biāo)識(shí)Dockerfile文件的路徑
- 執(zhí)行docker run -d -p 92:80 imageName:tag即可

備注:RUN命令在 image 文件的構(gòu)建階段執(zhí)行,執(zhí)行結(jié)果都會(huì)打包進(jìn)入 image 文件;CMD命令則是在容器啟動(dòng)后執(zhí)行。另外,一個(gè) Dockerfile 可以包含多個(gè)RUN命令,但是只能有一個(gè)CMD命令。注意,指定了CMD命令以后,docker container run命令就不能附加命令了,否則它會(huì)覆蓋CMD命令。
Docker Compose
Docker Compose是 docker 提供的一個(gè)命令行工具,用來(lái)定義和運(yùn)行由多個(gè)容器組成的應(yīng)用。使用 compose,我們可以通過(guò) YAML 文件聲明式的定義應(yīng)用程序的各個(gè)服務(wù),并由單個(gè)命令完成應(yīng)用的創(chuàng)建和啟動(dòng)。
以上就是本次介紹的全部相關(guān)知識(shí)點(diǎn),如果有任何補(bǔ)充可以聯(lián)系腳本之家小編。
相關(guān)文章
使用Docker搭建Apache Kafka環(huán)境的詳細(xì)過(guò)程
這篇文章主要介紹了使用Docker搭建Apache Kafka環(huán)境,本文使用Docker技術(shù)創(chuàng)建單個(gè)Kafka節(jié)點(diǎn)和Kafka集群環(huán)境,并且使用可視化工具連接服務(wù)查看代理服務(wù)器的配置信息,需要的朋友可以參考下2022-10-10
使用Docker構(gòu)建開(kāi)發(fā)環(huán)境的方法步驟(?Windows和mac)
利用Docker,我們可以做很多事情。所以本文就詳細(xì)介紹了使用Docker構(gòu)建開(kāi)發(fā)環(huán)境的方法步驟,分為?Windows和mac版本,具有一定的參考價(jià)值,感興趣的可以了解一下2021-12-12
詳解docker compose搭建lnmpr環(huán)境實(shí)現(xiàn)
這篇文章主要為大家介紹了使用docker compose搭建lnmpr環(huán)境實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
如何解決mysql配置文件錯(cuò)誤導(dǎo)致在docker中無(wú)法啟動(dòng)的問(wèn)題
這篇文章主要介紹了如何解決mysql配置文件錯(cuò)誤導(dǎo)致在docker中無(wú)法啟動(dòng)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
Docker容器處于Removal in process無(wú)法刪除問(wèn)題及解決
這篇文章主要介紹了Docker容器處于Removal in process無(wú)法刪除問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。2023-07-07
docker如何進(jìn)入啟動(dòng)容器查看內(nèi)部目錄結(jié)構(gòu)
這篇文章主要介紹了docker如何進(jìn)入啟動(dòng)容器查看內(nèi)部目錄結(jié)構(gòu)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
docker鏡像導(dǎo)入的實(shí)現(xiàn)方法
如果服務(wù)器網(wǎng)絡(luò)不好或者pull不下來(lái)鏡像,只能進(jìn)行導(dǎo)入,本文主要介紹了docker鏡像導(dǎo)入的實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09

