Docker

一、搭建私有鏡像倉庫

說明:
1、 這里是通過阿里云,搭建Docker私有鏡像倉庫。
2、 這里打包的鏡像是從官網(wǎng)拉下來的,并不是自己項目創(chuàng)建的新鏡像,主要測試

首先進入阿里云創(chuàng)建鏡像倉庫: https://dev.aliyun.com/search.html-->點擊管理中心(初次使用會提示開通,然后設置密碼)
然后創(chuàng)建命名空間和鏡像倉庫:

有關(guān)docker拉取和推送指令,點擊上圖的中管理,就能看到。

1、登錄阿里云
docker login --username=xxxx@qq.com registry.cn-hangzhou.aliyuncs.com

用于登錄的用戶名為阿里云賬號全名,密碼為上面開通開通服務時設置的密碼。

2、將鏡像推送到Registry
 docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/binron/xx_repertory:[鏡像版本號]
 docker push registry.cn-hangzhou.aliyuncs.com/binron/xx_repertory:[鏡像版本號]
3、從Registry中拉取鏡像
docker pull registry.cn-hangzhou.aliyuncs.com/binron/xx_repertory:[鏡像版本號]

二、案例演示

1、推送到阿里云鏡像倉庫

(1) 先登陸阿里云鏡像倉庫

docker login --username=xxxx@qq.com registry.cn-hangzhou.aliyuncs.com

(2) 把本地鏡像打包,推送到阿里云鏡像倉庫

docker tag dbfc48660aeb registry.cn-hangzhou.aliyuncs.com/binron/xx_repertory:xxiaonginx
docker push registry.cn-hangzhou.aliyuncs.com/binron/xx_repertory:xxiaonginx

(3) 在鏡像倉庫查看

我們可以看到 鏡像倉庫已經(jīng)存在該倉庫,說明推送成功

2、從阿里云鏡像倉庫拉取
docker pull registry.cn-hangzhou.aliyuncs.com/binron/xx_repertory:xxiaonginx
#拉取完成后
docker image

三、微服務應用Docker鏡像

1、啟動類

@SpringBootApplication
@RestController
public class DockerDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DockerDemoApplication.class, args);
    }

    //用來測試 是否鏡像容器是否成功
    @RequestMapping("/user")
    public Object findUser(){
        Map<String, String > map = new HashMap<>();
        map.put("name", "xuxiaoxiao");
        map.put("age","2");
        return map;
    }
}

2、dockerfile-maven-plugin插件 pom.xml配置

        <properties>
           <docker.image.prefix>xdclass</docker.image.prefix>
        </properties>

        <build>
            <finalName>docker-demo</finalName>
            <plugins>
                <plugin>
                    <groupId>com.spotify</groupId>
                    <artifactId>dockerfile-maven-plugin</artifactId>
                    <version>1.3.6</version>
                    <configuration>
                        <repository>${docker.image.prefix}/${project.artifactId}</repository>
                        <buildArgs>
                            <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
                        </buildArgs>
                    </configuration>
                </plugin>
            </plugins>
        </build>
##Spotify 的 docker-maven-plugin 插件是用maven插件方式構(gòu)建docker鏡像的。
${project.build.finalName} 產(chǎn)出物名稱,缺省為${project.artifactId}-${project.version}

3、配置Dockerfile (默認是項目根目錄)
Dockerfile : 由一系列命令和參數(shù)構(gòu)成的腳本,這些命令應用于基礎鏡像, 最終創(chuàng)建一個新的鏡像

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

參數(shù)講解:
FROM <image>:<tag> 需要一個基礎鏡像,可以是公共的或者是私有的, 后續(xù)構(gòu)建會基于此鏡像,如果同一個Dockerfile中建立多個鏡像時,可以使用多個FROM指令
VOLUME 配置一個具有持久化功能的目錄,主機 /var/lib/docker 目錄下(docker安裝目錄)創(chuàng)建了一個臨時文件,并鏈接到容器的/tmp。該步驟是可選的,如果涉及到文件系統(tǒng)的應用就很有必要了。/tmp目錄用來持久化到 Docker 數(shù)據(jù)文件夾,因為 Spring Boot 使用的內(nèi)嵌 Tomcat 容器默認使用/tmp作為工作目錄
ARG 設置編譯鏡像時加入的參數(shù),JAR_FILE是pom文件中的值 ENV 是設置容器的環(huán)境變量
COPY : 只支持將本地文件復制到容器 ,還有個ADD更強大但復雜點
ENTRYPOINT 容器啟動時執(zhí)行的命令
EXPOSE 8080 暴露鏡像端口
4、執(zhí)行打包命令

  mvn install dockerfile:build
  #maven打包構(gòu)建,會觸發(fā)單元測試,部分情況可以跳過,
  # mvn install -Dmaven.test.skip=true dockerfile:build

5、啟動鏡像
docker run -d --name "start" -p 8080:8080 鏡像ID
然后訪問應用,測試是否成功返回
6、查看日志

docker logs -f  容器ID

7、生產(chǎn)環(huán)境常見問題之配置中心訪問
配置中心訪問出錯,路徑不對

#解決:修改所有的注冊中心,增加下面配置
eureka:
  client:
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
  instance:
    instance-id: ${spring.cloud.client.ip-address}:${server.port}
    prefer-ip-address: true
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 《Docker從入門到實踐》閱讀筆記 原書地址: https://yeasy.gitbooks.io/docker...
    GuoYuebo閱讀 11,633評論 1 39
  • Docker 學習目標: 掌握Docker基礎知識,能夠理解Docker鏡像與容器的概念 完成Docker安裝與啟...
    執(zhí)筆夢一場閱讀 3,513評論 2 10
  • 一,小王對于容器的困惑 小王剛開始學習Docker的時候,找資料在網(wǎng)上看到最多的是Docker的好處。比如: 1、...
    架構(gòu)師小秘圈閱讀 8,655評論 0 24
  • 第一次和喜歡的人聊到結(jié)婚,事業(yè)和人生。覺得什么事情都是順其自然的,不能強求,譬如愛情。我愛你,你不愛我,但也許有一...
    向左向右稍息立正閱讀 201評論 0 0
  • 行動起來,你將遇見更具有自信力的自己! 今日話題:哪些習慣促使你成為現(xiàn)在的自己?你是怎么做的? 雖然行動力不是很夠...
    sharemy的簡書閱讀 148評論 0 0

友情鏈接更多精彩內(nèi)容