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)安裝光盤有點(diǎn)像,使用系統(tǒng)安裝光盤可以安裝系統(tǒng),同理,使用Docker鏡像可以運(yùn)行 Docker鏡像中的程序。
- Container(容器):容器是鏡像的可運(yùn)行實(shí)例。鏡像和容器的關(guān)系有點(diǎn)類似于面向?qū)ο笾?,類和?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)類似,如果把 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)系腳本之家小編。