Docker?Compose與Docker鏡像倉(cāng)庫(kù)詳解
1.Docker Compose
Docker Compose可以基于Compose文件幫我們快速的部署分布式應(yīng)用,而無需手動(dòng)一個(gè)個(gè)創(chuàng)建和運(yùn)行容器!

1.1.初識(shí)DockerCompose
Compose文件是一個(gè)文本文件,通過指令定義集群中的每個(gè)容器如何運(yùn)行。格式如下:
version: "3.8"
services:
mysql:
image: mysql:5.7.25
environment:
MYSQL_ROOT_PASSWORD: 123
volumes:
- "/tmp/mysql/data:/var/lib/mysql"
- "/tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf"
web:
build: .
ports:
- "8090:8090"上面的Compose文件就描述一個(gè)項(xiàng)目,其中包含兩個(gè)容器:
mysql:一個(gè)基于mysql:5.7.25鏡像構(gòu)建的容器,并且掛載了兩個(gè)目錄web:一個(gè)基于docker build臨時(shí)構(gòu)建的鏡像容器,映射端口時(shí)8090
Docker Compose的詳細(xì)語法參考官網(wǎng):Compose file specification
其實(shí)Docker Compose文件可以看做是將多個(gè)docker run命令寫到一個(gè)文件,只是語法稍有差異。
1.2.安裝Docker Compose
1.3.部署微服務(wù)集群
需求:將之前的cloud-demo微服務(wù)集群利用Docker Compose部署
實(shí)現(xiàn)思路:
① 根據(jù)集群建立的cloud-demo文件夾,編寫好了docker-compose文件
② 修改自己的cloud-demo項(xiàng)目,將nacos地址都命名為docker-compose中的服務(wù)名
③ 使用maven打包工具,將項(xiàng)目中的每個(gè)微服務(wù)都打包為app.jar
④ 將打包好的app.jar拷貝到cloud-demo中的每一個(gè)對(duì)應(yīng)的子目錄中
⑤ 將cloud-demo上傳至虛擬機(jī),利用docker-compose up -d來部署
1.3.1.compose文件
根據(jù)集群建立的cloud-demo文件夾,編寫好了docker-compose文件,而且每個(gè)微服務(wù)都準(zhǔn)備了一個(gè)獨(dú)立的目錄:

內(nèi)容如下:
version: "3.2"
services:
userservice:
build: ./user-service
orderservice:
build: ./order-service
gateway:
build: ./gateway
ports:
- "10010:10010"可以看到,其中包含4個(gè)service服務(wù):
- nacos:作為注冊(cè)中心和配置中心
- image: nacos/nacos-server: 基于nacos/nacos-server鏡像構(gòu)建
- environment:環(huán)境變量
- MODE: standalone:?jiǎn)吸c(diǎn)模式啟動(dòng)
- ports:端口映射,這里暴露了8848端口
- userservice、orderservice、gateway:都是基于Dockerfile臨時(shí)構(gòu)建的
查看微服務(wù)目錄,可以看到都包含Dockerfile文件:

內(nèi)容如下:
FROM java:openjdk-8u111-alpine COPY ./gateway.jar /tmp/app.jar ENTRYPOINT java -jar /tmp/app.jar
FROM java:openjdk-8u111-alpine COPY ./order-service.jar /tmp/app.jar ENTRYPOINT java -jar /tmp/app.jar
FROM java:openjdk-8u111-alpine COPY ./user-service.jar /tmp/app.jar ENTRYPOINT java -jar /tmp/app.jar
1.3.2.修改微服務(wù)配置
因?yàn)槲⒎?wù)將來要部署為docker容器,而容器之間互聯(lián)不是通過IP地址,而是通過容器名。這里我們將order-service、user-service、gateway服務(wù)的nacos地址都修改為基于容器名的訪問。
如下所示:
spring:
application:
name: orderservice
cloud:
nacos:
server-addr: nacos:8848 # nacos服務(wù)地址1.3.3.打包
接下來需要將我們的每個(gè)微服務(wù)都打包。
可以通過修改pom.xml中的打包名稱來實(shí)現(xiàn),每個(gè)微服務(wù)都需要修改:
<build>
<!-- 服務(wù)打包的最終名稱 -->
<finalName>gateway</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>打包后:

1.3.4.拷貝jar包到部署目錄
編譯打包好的jar包文件,需要放到Dockerfile的同級(jí)目錄中。注意:每個(gè)微服務(wù)的jar包放到與服務(wù)名稱對(duì)應(yīng)的目錄,別搞錯(cuò)了。
user-service:

order-service:

gateway:

1.3.5.部署
最后,我們需要將文件整個(gè)cloud-demo文件夾上傳到虛擬機(jī)中,理由DockerCompose部署。
上傳到任意目錄:

部署:
進(jìn)入cloud-demo目錄,然后運(yùn)行下面的命令:
docker-compose up -d
2.Docker鏡像倉(cāng)庫(kù)
2.1.搭建私有鏡像倉(cāng)庫(kù)
2.2.推送、拉取鏡像
推送鏡像到私有鏡像服務(wù)必須先tag,步驟如下:
① 重新tag本地鏡像,名稱前綴為私有倉(cāng)庫(kù)的地址:192.168.0.111:8080/
docker tag nginx:latest 192.168.0.111:8080/nginx:1.0
② 推送鏡像
docker push 192.168.0.111:8080/nginx:1.0
③ 拉取鏡像
docker pull 192.168.0.111:8080/nginx:1.0
到此這篇關(guān)于Docker Compose與Docker鏡像倉(cāng)庫(kù)的文章就介紹到這了,更多相關(guān)Docker鏡像倉(cāng)庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker如何快速搭建幾個(gè)常用的第三方服務(wù)詳解
這篇文章主要給大家介紹了關(guān)于利用docker如何快速搭建幾個(gè)常用的第三方服務(wù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07
Docker如何自定義網(wǎng)絡(luò)實(shí)現(xiàn)容器互通
這篇文章主要為大家詳細(xì)介紹了Docker如何通過自定義網(wǎng)絡(luò)實(shí)現(xiàn)容器互通,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-04-04
docker創(chuàng)建mongodb數(shù)據(jù)庫(kù)容器的方法
本文將通過docker創(chuàng)建一個(gè)mongodb數(shù)據(jù)庫(kù)容器,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-03-03
prometheus監(jiān)控節(jié)點(diǎn)程序的安裝及卸載命令
這篇文章主要為大家介紹了prometheus監(jiān)控節(jié)點(diǎn)程序的安裝及卸載命令,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
Docker鏡像與容器的導(dǎo)入導(dǎo)出以及常用命令總結(jié)
Docker是一個(gè)開源的容器引擎,基于go語言開發(fā)并遵循了apache2.0協(xié)議開源,下面這篇文章主要給大家介紹了關(guān)于Docker鏡像與容器的導(dǎo)入導(dǎo)出以及常用命令總結(jié)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08
docker部署springboot和vue項(xiàng)目的實(shí)現(xiàn)步驟
本文主要介紹了docker部署springboot和vue項(xiàng)目的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-06-06
Docker?下MySQL數(shù)據(jù)庫(kù)的備份和恢復(fù)的操作方法
這篇文章主要介紹了Docker?下MySQL數(shù)據(jù)庫(kù)的備份和恢復(fù)操作方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-02-02
docker部署釘釘機(jī)器人報(bào)警通知的實(shí)現(xiàn)
本文主要介紹了docker部署釘釘機(jī)器人報(bào)警通知的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05
Docker從零構(gòu)建php-nginx-alpine鏡像的方法
這篇文章主要介紹了Docker從零構(gòu)建php-nginx-alpine鏡像的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-11-11
docker容器運(yùn)行后退出(怎么才能一直運(yùn)行)
這篇文章主要介紹了docker容器運(yùn)行后退出(怎么才能一直運(yùn)行),本文詳細(xì)的介紹了解決方法,非常具有實(shí)用價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-01-01

