Docker?Compose與Docker鏡像倉庫詳解
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:單點(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鏡像倉庫
2.1.搭建私有鏡像倉庫
2.2.推送、拉取鏡像
推送鏡像到私有鏡像服務(wù)必須先tag
,步驟如下:
① 重新tag
本地鏡像,名稱前綴為私有倉庫的地址: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鏡像倉庫的文章就介紹到這了,更多相關(guān)Docker鏡像倉庫內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker不能綁定靜態(tài)的外網(wǎng)固定ip的問題及解決辦法
這篇文章主要介紹了Docker不能綁定靜態(tài)的外網(wǎng)固定ip的問題及解決辦法,需要的朋友可以參考下2017-01-01docker利用selenium+testng實(shí)現(xiàn)web自動(dòng)化的方法
這篇文章主要給大家介紹了關(guān)于docker利用selenium+testng實(shí)現(xiàn)web自動(dòng)化的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2018-10-10一次Docker中Redis連接暴增的問題排查實(shí)戰(zhàn)記錄
這篇文章主要給大家介紹了一次Docker中Redis連接暴增的問題排查的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06在Ubuntu上使用Grafana監(jiān)控Docker的方法
如今越來越多的公司開始使用Docker,一談起Docker總是會(huì)跟著讓人聯(lián)想到輕量這個(gè)詞,甚至?xí)幸环N通過Docker啟動(dòng)一個(gè)服務(wù)會(huì)節(jié)省很多資源的錯(cuò)覺。然而Docker的「輕」也只是相對(duì)于傳統(tǒng)虛擬機(jī)而已。Docker如何監(jiān)控呢?本文就給大家介紹在Ubuntu上如何使用Grafana監(jiān)控Docker。2016-12-12docker-compose配置并部署redis服務(wù)的實(shí)現(xiàn)
本文主要介紹了docker-compose配置并部署redis服務(wù)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04