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

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

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

內容如下:
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.修改微服務配置
因為微服務將來要部署為docker容器,而容器之間互聯(lián)不是通過IP地址,而是通過容器名。這里我們將order-service、user-service、gateway服務的nacos地址都修改為基于容器名的訪問。
如下所示:
spring:
application:
name: orderservice
cloud:
nacos:
server-addr: nacos:8848 # nacos服務地址1.3.3.打包
接下來需要將我們的每個微服務都打包。
可以通過修改pom.xml中的打包名稱來實現(xiàn),每個微服務都需要修改:
<build>
<!-- 服務打包的最終名稱 -->
<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的同級目錄中。注意:每個微服務的jar包放到與服務名稱對應的目錄,別搞錯了。
user-service:

order-service:

gateway:

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

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

