1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        Docker 詳細(xì)部署不香嗎?

        共 6254字,需瀏覽 13分鐘

         ·

        2020-09-16 06:37

        鏈接:toutiao.com/i6843391272229536267


        目錄

        • docker介紹
        • 安裝docker
          • Ubuntu安裝docker
          • CentOS安裝docker
          • 通過腳本安裝
        • 拉取java環(huán)境
        • 創(chuàng)建springboot項(xiàng)目
        • 打包springboot到docker
        • docker查看容器的日志
        • 查看log4j2輸出問文件日志
        Docker 是一個(gè)開源的應(yīng)用容器引擎,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的鏡像中,然后發(fā)布到任何流行的 Linux或Windows 機(jī)器上,也可以實(shí)現(xiàn)虛擬化。容器是完全使用沙箱機(jī)制,相互之間不會(huì)有任何接口。
        docker的核心思想是通過對(duì)應(yīng)用的封裝、分發(fā)、部署、運(yùn)行生命周期進(jìn)行管理,達(dá)到應(yīng)用組件級(jí)別的“一次性封裝,到處運(yùn)行”。這里的應(yīng)用組件,可以是一個(gè)web應(yīng)用,也可以是一個(gè)環(huán)境,更可以是一個(gè)數(shù)據(jù)庫(kù)等等。
        既然docker這么神奇,那我們?nèi)绾伟惭bdocker呢?我們一起來走一下吧。
        PS:我把 Dorcker 相關(guān)的文章整理好了,關(guān)注微信公眾號(hào) Java后端,回復(fù) 666 下載就可以了。

        Ubuntu安裝docker

        由于本人的系統(tǒng)是CentOS,所以這里就只展示一下CentOS的安裝方式,Ubuntu以及其他系統(tǒng)請(qǐng)自行百度。

        CentOS安裝docker

        docker要求CentOS在7.0以后的版本,如果你的系統(tǒng)版本還在7.0以前,請(qǐng)先升級(jí)一下版本在進(jìn)行安裝,同時(shí)不支持32位的系統(tǒng),內(nèi)核版本至少3.10。
        請(qǐng)先確保沒有安裝過docker,否則有可能會(huì)導(dǎo)致安裝失敗,如果之前安裝過,可以嘗試直接yum isntall -y docker
        1.更新軟件源第一個(gè)命令
        yum update

        遇到他輸入y,然后回車,看到下面信息表示更新成功:

        第二個(gè)命令
        yum install?-y yum-utils device-mapper-persistent-data?lvm2

        2.添加docker穩(wěn)定版本的yum軟件源
        yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

        3.再次更新yum源,并安裝docker
        yum update

        yum install?-y docker-ce

        看到這個(gè)頁(yè)面,標(biāo)識(shí)docker已經(jīng)安裝成功了。
        4.安裝完成之后啟動(dòng)docker
        systemctl start?docker
        5.重啟
        systemctl?restart docker
        6.停止
        systemctl stop?docker
        7.開機(jī)自啟動(dòng)
        systemctl enable?docker
        8.查看docker的狀態(tài)
        systemctl?status docker

        通過腳本安裝

        除了上面的yum安裝,還可以采用shell腳本安裝,安裝流程如下:
        curl -fsSL https://get.docker.com/ | sh
        或者
        wget -qO- https://get.docker.com/ | sh
        拉取jdk很簡(jiǎn)單,直接執(zhí)行一行代碼即可,我這里拉取的時(shí)java 8的版本。
        docker pull java:8
        拉取完成之后執(zhí)行:
        docker?images
        如果出現(xiàn)下面內(nèi)容,表示拉取成功

        1.新建項(xiàng)目

        引入sprint-boot-web的依賴

        新建完成之后的項(xiàng)目結(jié)構(gòu)

        2.引入docker依賴
        <properties>
        ???????<docker.image.prefix>registry.aliyuncs.com/linhuatestdocker.image.prefix>

        ????properties>


        ?
        ????????????<plugin>
        ????????????????<groupId>com.spotifygroupId>
        ????????????????<artifactId>docker-maven-pluginartifactId>
        ????????????????<version>1.0.0version>
        ????????????????<configuration>
        ????????????????????<imageName>${docker.image.prefix}/${project.artifactId}imageName>
        ????????????????????
        ????????????????????<dockerDirectory>src/main/dockerdockerDirectory>
        ????????????????????<resources>
        ????????????????????????<resource>
        ????????????????????????????<targetPath>/targetPath>
        ????????????????????????????<directory>${project.build.directory}directory>
        ????????????????????????????<include>${project.build.finalName}.jarinclude>
        ????????????????????????resource>
        ????????????????????resources>
        ????????????????configuration>
        ????????????plugin>
        3.新建docker文件在main目錄下新建docker目錄,然后在docker目錄下創(chuàng)建dockerfile文件,不需要后綴名。

        創(chuàng)建完成之后的工程目錄如下:

        4.編輯dockerfile文件
        FROM java:8
        VOLUME /tmp/tomcat
        ADD spring-boot-docker-0.0.1-SNAPSHOT.jar springboot-docker.jar
        ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/springboot-docker.jar"]
        FROM:指定存在的鏡像,java:8是我剛剛拉取的鏡像,運(yùn)行的基礎(chǔ)。VOLUME:指向的一個(gè)臨時(shí)文件,用于存儲(chǔ)tomcat工作。ADD:復(fù)制文件并且重命名文件。ENTRYPOINT:初始化配置或者自定義配置。
        5.創(chuàng)建測(cè)試接口

        TestController內(nèi)容如下:
        package?com.ymy.controller;

        import?lombok.extern.slf4j.Slf4j;
        import?org.springframework.web.bind.annotation.RequestMapping;
        import?org.springframework.web.bind.annotation.RequestMethod;
        import?org.springframework.web.bind.annotation.RestController;

        @RestController
        @Slf4j
        public class TestController {

        ????@RequestMapping(value?= "/test",method = RequestMethod.GET)
        ????public String test(){
        ????????System.out.println("這是控制臺(tái)日志!");
        ????????log.info("這是輸出到文件的日志");
        ????????return???"HELLO-BUG?。。。。。。。。?!";
        ????}
        }
        在resources目錄下創(chuàng)建log4j2.xml文件主要看這兩個(gè)參數(shù):

        這里我使用了log4j2的日志,如何配置log4j2的日志,請(qǐng)參考 springboot整合Log4j2(將日志輸出到指定文件)。
        6.編寫application.yml配置文件
        server:
        ??port: 9999
        到這里springboot項(xiàng)目就創(chuàng)建完成了,我們現(xiàn)在啟動(dòng)一下項(xiàng)目。
        . ____ _ __ _ _
        ?/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
        ?\\/ ___)| |_)| | | | | || (_| | ) ) ) )
        ??' |____| .__|_| |_|_| |_\__, | / / / /
        ?=========|_|==============|___/=/_/_/_/
        ?:: Spring Boot :: (v2.2.5.RELEASE)

        15:29:19.386 [main] INFO com.ymy.SpringBootDockerApplication - Starting SpringBootDockerApplication on LAPTOP-3GLHJRE9 with PID 20652 (D:\springboot\spring-boot-docker\target\classes started by admin in D:\springboot)
        15:29:19.395 [main] INFO com.ymy.SpringBootDockerApplication - No active profile set, falling back to?default?profiles: default
        15:29:20.183?[main] INFO org.springframework.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized?with?port(s): 9999?(http)
        15:29:20.200?[main] INFO org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-9999"]
        15:29:20.201?[main] INFO org.apache.catalina.core.StandardService - Starting?service [Tomcat]
        15:29:20.201?[main] INFO org.apache.catalina.core.StandardEngine - Starting?Servlet engine: [Apache Tomcat/9.0.31]
        15:29:20.309?[main] INFO org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
        15:29:20.309?[main] INFO org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in?881?ms
        15:29:20.452?[main] INFO org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
        15:29:20.568?[main] INFO org.apache.coyote.http11.Http11NioProtocol - Starting?ProtocolHandler ["http-nio-9999"]
        15:29:20.596?[main] INFO org.springframework.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on?port(s): 9999?(http) with?context?path?''
        15:29:20.599?[main] INFO com.ymy.SpringBootDockerApplication - Started SpringBootDockerApplication in?1.664?seconds (JVM running for?4.04)

        如果看到這個(gè)頁(yè)面表示springboot項(xiàng)目沒有問題,現(xiàn)在我們將項(xiàng)目拷貝到服務(wù)器中。

        我現(xiàn)在已經(jīng)將項(xiàng)目拷貝到服務(wù)器中,我們現(xiàn)在需要將它打包到docker中,借助maven實(shí)現(xiàn)打包,如果還沒有安裝maven的,請(qǐng)先安裝maven,切換到項(xiàng)目的根目錄

        執(zhí)行
        mvn clean package?docker:build
        執(zhí)行完之后將會(huì)看到

        表示打包成功。
        執(zhí)行
        docker?images

        我們發(fā)現(xiàn)docker的鏡像中多了一個(gè)springboot/spring-boot-docker,沒錯(cuò),這個(gè)就是我們的springboot項(xiàng)目,既然鏡像已經(jīng)生成,那么如何使用這個(gè)鏡像呢?
        執(zhí)行
        docker run --name springbooot-docker -p 9999:9999 -d 4a2

        run:運(yùn)行的意思–name:指定鏡像啟動(dòng)的之后的名稱-p:容器和外部的端口映射 第一個(gè)端口:外部 第二個(gè)端口:內(nèi)部-d:后臺(tái)運(yùn)行 -t:實(shí)時(shí)運(yùn)行,窗口關(guān)閉,程序結(jié)束。4a2:表示鏡像的id(IMAGE ID)前3位,這里的id并不需要輸入全稱,只需要輸入前幾個(gè)就行,有一個(gè)前提:當(dāng)有很多鏡像的時(shí)候,前面幾個(gè)字符就有可能會(huì)相同,這個(gè)時(shí)候就需要多輸入幾位,直到不相同位置。
        啟動(dòng)了鏡像之后我怎么知道有沒有成功呢?這個(gè)時(shí)候我們就需要一個(gè)命令來查看已經(jīng)啟動(dòng)的任務(wù)
        docker ps

        我們發(fā)現(xiàn)這里已經(jīng)出現(xiàn)了我們之前啟動(dòng)的鏡像,所以這基本上代表啟動(dòng)成功了,為了驗(yàn)證是否啟動(dòng)成功,我們?cè)跒g覽器輸入測(cè)試的接口:ip:9999/test

        這說明我們已經(jīng)springboot項(xiàng)目已經(jīng)啟動(dòng)成功了,到這里docker部署springboot項(xiàng)目差不就結(jié)束了,但是你可能還有一個(gè)疑問,如果我想看控制臺(tái)的日志怎么辦呢?像我們一般使用java -jar的時(shí)候都會(huì)生成一個(gè)控制臺(tái)的日志文件,那docker容器中怎么查看控制臺(tái)日志呢?其實(shí)很簡(jiǎn)單,只需要一行命令即可
        docker ps
        找到容器的id

        然后執(zhí)行
        docker logs -f

        這個(gè)時(shí)候我們就能看到控制臺(tái)的日志了,如何我們想看log4j2輸出的文件日志呢?
        還記得我們?cè)趌og4j2中配置了日志的輸出目錄了嗎?

        沒錯(cuò),就是這個(gè), 我們切換到這個(gè)目下

        發(fā)現(xiàn)這里生成了三個(gè)文件,我們打開info.log
        tail?-100f info.log

        我們發(fā)現(xiàn)并沒有輸入我們打印的:“這是輸出到文件的日志”,難道是我們配置錯(cuò)了問題?不是的,是因?yàn)槲覀冋义e(cuò)了位置,真正的文件日志在容器內(nèi)部,所以我們需要先進(jìn)入容器內(nèi)部
        docker exec?-it ca2cd59fff9b /bin/bash
        ca2cd59fff9b:容器id
        然后再切換到我們?nèi)罩镜妮敵雎窂?/span>
        cd?work/spring-boot-docker

        這里也找到了三個(gè)日志文件,我們打印info.log
        tail?-100f info.log

        這就是我們log4j2輸出到文件的日志,到這里docker整合springboot項(xiàng)目就差不多結(jié)束了,如果想要退出docker容器可以使用
        exit


        瀏覽 88
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            三级片在线视频观看 | 人妻视频网| 轻轻草国产在线 | 久久久久久久9 | 国产视频一区二区三区四区五区 | 色综合网天天综合网 | 亚洲三级精品 | 三级成人在线 | 男人天堂色 | 福利在线视频导航 |