亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

深入淺出微服務(wù)架構(gòu):一分鐘讓你輕松上手Docker容器

 

在微服務(wù)時代,服務(wù)數(shù)量及規(guī)模越來越大,服務(wù)的部署及運(yùn)維的模式如果仍然采用傳統(tǒng)方式就會大大增加運(yùn)維成本。所以微服務(wù)時代的運(yùn)維方式一定是Devops模式,通過構(gòu)建自動化運(yùn)維發(fā)布平臺來打通產(chǎn)品、開發(fā)、測試及運(yùn)維流程,從而整體上提升研發(fā)效能,而這也是目前大部分公司正在做的事情。

隨著以Docker為代表的容器化技術(shù)的普及,目前Devops實(shí)踐大多會采用容器(如Docker、K8s)這樣的方式來作為微服務(wù)應(yīng)用部署運(yùn)行的載體,并通過容器的彈性擴(kuò)展來實(shí)現(xiàn)快速擴(kuò)容和縮容,從而更快地響應(yīng)業(yè)務(wù)、更好地利用資源。

目前Devops最流行的部署方案是基于K8s的集群方案,但是它本身也是基于Docker容器技術(shù)的,所以在接觸K8s技術(shù)之前,先通過本文了解下Docker及基于Docker的容器化部署。

Docker的基本概念

Docker是一個開源的應(yīng)用容器引擎,也是目前最流程的應(yīng)用部署方式,通過它可以把應(yīng)用及其依賴打包到一個可移植的鏡像中,然后利用Docker提供的部署機(jī)制將其發(fā)布至任意安裝了Docker容器的系統(tǒng)環(huán)境中。從使用角度主要需要理解一下幾個要點(diǎn)如圖所示:

深入淺出微服務(wù)架構(gòu):一分鐘讓你輕松上手Docker容器

 

如上圖所示,理解Docker的使用方式需要掌握以下幾個概念:

  • Image(鏡像):它是一個可執(zhí)行文件,包含應(yīng)用代碼、依賴庫、運(yùn)行環(huán)境(如JRE等)以及環(huán)境變量及配置等信息,通過鏡像可以啟動一個應(yīng)用,鏡像的構(gòu)建過程通過Dockefile文件描述。
  • Container(容器):使用Image啟動的一個進(jìn)程實(shí)例,它與鏡像之間為一對多的關(guān)系,一個鏡像可以啟動多個容器實(shí)例。
  • Service(服務(wù)):一組提供對外服務(wù)的Container,這些Container使用同一個Image鏡像,它與鏡像為一對一、與容器為一對多的關(guān)系,Service由docker-compose文件定義。
  • Stack(應(yīng)用):一組Service,相互協(xié)作對外提供服務(wù),可以看作是一個完整的應(yīng)用,在一些復(fù)雜的場景中會拆分為多個Stack,由docker-compose構(gòu)建。

Docker部署一個Spring Boot服務(wù)

為了更進(jìn)一步加深對上述概念的理解,這里以一個Spring Boot應(yīng)用為例演示如何通過Docker部署一個Spring Boot服務(wù)。這里可以通過IDE創(chuàng)建一個簡單的Spring Boot應(yīng)用并寫一個測試接口,如下圖所示:

深入淺出微服務(wù)架構(gòu):一分鐘讓你輕松上手Docker容器

 

以上為通過IDEA創(chuàng)建的一個最為簡單的Spring Boot應(yīng)用程序,運(yùn)行后啟動服務(wù)可以通過端口訪問測試接口,接下來使用Docker部署該服務(wù),步驟如下:

創(chuàng)建Dockerfile文件構(gòu)建Docker鏡像

按照前面Docker的介紹,如果要讓Spring Boot程序運(yùn)行在Docker容器上,首先需要構(gòu)建Docker鏡像,而構(gòu)建的過程則需要通過Dockerfile文件來描述。例如在項(xiàng)目src/main/docker目錄創(chuàng)建Dockerfile文件,代碼如下:

FROM JAVA:8
VOLUME /tmp
RUN mkdir /App
ADD springboot-1.0-SNAPSHOT.jar /app/springboot.jar
ADD runboot.sh /app/
RUN bash -c 'touch /app/springboot.jar'
WORKDIR /app
RUN chmod a+x runboot.sh
EXPOSE 9090
CMD /app/runboot.sh

上述Dockerfile文件定義了運(yùn)行的基礎(chǔ)信息為JDK1.8、容器運(yùn)行的目錄為/app、并添加了所需的Jar包等信息,最后定義了要執(zhí)行的命令為“/app/runboot.sh”腳本。runboot.sh腳本代碼如下:

sleep 10
java -Djava.security.egd=file:/dev/./urandom -jar  /app/springboot.jar

這里打包Spring Boot應(yīng)用Docker鏡像的Dockerfile文件就定義好了,為了能在Maven項(xiàng)目中執(zhí)行Docker鏡像構(gòu)建命令,還需要在項(xiàng)目pom.xml文件添加Maven Build插件信息,代碼如下:

<!--Docker Maven插件依賴-->
<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <configuration>
        <imageName>${project.name}:${project.version}</imageName>
        <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
        <skipDockerBuild>false</skipDockerBuild>
        <resources>
            <resource>
                <directory>${project.build.directory}</directory>
                <include>${project.build.finalName}.jar</include>
            </resource>
        </resources>
    </configuration>
</plugin>

接下來可以通過Maven命令構(gòu)建Spring Boot應(yīng)用Docker鏡像,命令如下:

mvn clean package docker:build

運(yùn)行成功可以看到本地Docker倉庫中鏡像信息,命令如下:

深入淺出微服務(wù)架構(gòu):一分鐘讓你輕松上手Docker容器

 

這表示Spring Boot程序的Docker鏡像已打好,需要說明的是以上命令運(yùn)行是需要你的系統(tǒng)已經(jīng)安裝Docker容器運(yùn)行環(huán)境。

創(chuàng)建docker-compose.yml文件

有了Docker鏡像,如何將鏡像作為容器啟動以及該鏡像中啟動那些服務(wù)、它的資源限制及網(wǎng)絡(luò)使用什么方式,這些都是docker-compose文件定義的,其代碼如下:

version: '3.2'
services:
  springboot:
    image: springboot:1.0-SNAPSHOT
    hostname: springboot
    environment:
      - SPRING_PROFILES_ACTIVE=${SPRING_PROFILES_ACTIVE:-debug}
    ports:
      - "9999:9090"
    networks:
      - mynet
networks:
  mynet:
    external: true

在上述docker compose文件中定義了一個springboot服務(wù),然后針對該服務(wù)描述了其所使用的Docker鏡像、環(huán)境變量參數(shù)、容器端口映射及網(wǎng)絡(luò)等信息。需要說明的是services下面還可以定義服務(wù),stack(應(yīng)用)與service(服務(wù))的關(guān)系在docker-compose中是一對多的關(guān)系,只是這里暫時沒有需要定義其他服務(wù)。

啟動Docker容器實(shí)現(xiàn)應(yīng)用容器部署

通過上述準(zhǔn)備,此時就可以通過docker-compose啟動Spring Boot應(yīng)用的Docker鏡像,目錄切換到src/main/docker目錄,執(zhí)行如下命令:

$ docker-compose up -d
Creating docker_springboot_1 ... done

此時應(yīng)用就已經(jīng)通過Docker容器部署了,可以通過如下命令進(jìn)行查看:

$ docker ps
CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS              PORTS                                                                      NAMES
4117e4a8963e        springboot:1.0-SNAPSHOT   "/bin/sh -c /app/run…"   5 seconds ago       Up 3 seconds        9090/tcp, 0.0.0.0:9999->9999/tcp                                           docker_springboot_1

到這里就大功告成了,訪問9999端口就能夠訪問到Docker容器中的Spring Boot服務(wù)了。

分享到:
標(biāo)簽:容器 Docker
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定