溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Docker?Compose與Docker鏡像倉庫怎么創(chuàng)建

發(fā)布時(shí)間:2023-03-21 10:59:27 來源:億速云 閱讀:91 作者:iii 欄目:開發(fā)技術(shù)

今天小編給大家分享一下Docker Compose與Docker鏡像倉庫怎么創(chuàng)建的相關(guān)知識點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

    1.Docker Compose

    Docker Compose可以基于Compose文件幫我們快速的部署分布式應(yīng)用,而無需手動一個(gè)個(gè)創(chuàng)建和運(yùn)行容器!

    1.1.初識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

    參考安裝Docker

    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è)對應(yīng)的子目錄中

    ⑤ 將cloud-demo上傳至虛擬機(jī),利用docker-compose up -d來部署

    1.3.1.compose文件

    根據(jù)集群建立的cloud-demo文件夾,編寫好了docker-compose文件,而且每個(gè)微服務(wù)都準(zhǔn)備了一個(gè)獨(dú)立的目錄:

    Docker?Compose與Docker鏡像倉庫怎么創(chuàng)建

    內(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:作為注冊中心和配置中心

      • image: nacos/nacos-server: 基于nacos/nacos-server鏡像構(gòu)建

      • environment:環(huán)境變量

      • MODE: standalone:單點(diǎn)模式啟動

      • ports:端口映射,這里暴露了8848端口

    • userservice、orderservice、gateway:都是基于Dockerfile臨時(shí)構(gòu)建的

    查看微服務(wù)目錄,可以看到都包含Dockerfile文件:

    Docker?Compose與Docker鏡像倉庫怎么創(chuàng)建

    內(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>

    打包后:

    Docker?Compose與Docker鏡像倉庫怎么創(chuàng)建

    1.3.4.拷貝jar包到部署目錄

    編譯打包好的jar包文件,需要放到Dockerfile的同級目錄中。注意:每個(gè)微服務(wù)的jar包放到與服務(wù)名稱對應(yīng)的目錄,別搞錯(cuò)了。

    user-service

    Docker?Compose與Docker鏡像倉庫怎么創(chuàng)建

    order-service

    Docker?Compose與Docker鏡像倉庫怎么創(chuàng)建

    gateway

    Docker?Compose與Docker鏡像倉庫怎么創(chuàng)建

    1.3.5.部署

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

    上傳到任意目錄:

    Docker?Compose與Docker鏡像倉庫怎么創(chuàng)建

    部署:

    進(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

    以上就是“Docker Compose與Docker鏡像倉庫怎么創(chuàng)建”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學(xué)習(xí)更多的知識,請關(guān)注億速云行業(yè)資訊頻道。

    向AI問一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI