日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

在内网中使用maven_maven构建docker镜像三部曲之三:推送到远程仓库(内网和阿里云)-Go语言中文社区...

發布時間:2023/11/27 生活经验 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在内网中使用maven_maven构建docker镜像三部曲之三:推送到远程仓库(内网和阿里云)-Go语言中文社区... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在上一章《maven構建docker鏡像三部曲之二:編碼和構建鏡像》的實戰中,我們將spring boot的web工程構建成docker鏡像并在本地啟動容器成功,今天我們把docker-maven-plugin插件的推送功能也用上,這樣編譯、構建、推送都能一次性完成了;

源碼和環境

本次實戰的java web工程源碼和環境都沿用上一章的,源碼我已經上傳到github上,地址是:git@github.com:zq2599/blog_demos.git,瀏覽器訪問地址是:https://github.com/zq2599/blog_demos,這里面有多個工程,本次實戰用到的是mavendockerplugindemo,如下圖紅框所示:

把構建的鏡像推送到哪里去

本次實戰有以下兩個地方可以存放鏡像,我們每個都要試試:

內網中,自己搭建的docker私有倉庫;

阿里云的鏡像倉庫;

接下來我們分別推送到上述兩個倉庫,先推送到內網的私有倉庫吧。

如何搭建內網的私有倉庫

在內網搭建和使用私有倉庫的詳細步驟,請看《docker私有倉庫搭建與使用實戰》,就不在此贅述了;

用于編譯和構建鏡像的虛擬機上,記得配置/etc/default/docker和/lib/systemd/system/docker.service文件,使docker服務可以在http協議下工作,否則無法推送到內網私有倉庫;

pom配置信息

用SecureCRT登錄虛擬機,在工程的目錄下新建一個pom_3_inner_server.xml文件,內容和pom_1_by_param.xml文件的一模一樣,然后對pom_3_inner_server.xml文件做下列修改:

新增registryUrl節點,內容是私有倉庫地址和端口,如下:192.168.119.148:5000

新增pushImage節點,內容如下:true

修改imageName節點的內容,改為私有倉庫地址和端口,再加上鏡像id和TAG,如下:192.168.119.148:5000/${project.artifactId}:${project.version}

執行以下命令開始構建:

mvn -f pom_3_inner_server.xml clean package -DskipTests docker:build

構建完畢后發現輸出了報錯信息,如下:

[INFO] Building image 192.168.119.148:5000/mavendockerplugindemo:0.0.1-SNAPSHOT

Step 1/3 : FROM java:8u111-jdk

---> d23bdf5b1b1b

Step 2/3 : ADD /mavendockerplugindemo-0.0.1-SNAPSHOT.jar //

---> 634afbb47de5

Removing intermediate container 8c165fad6a2c

Step 3/3 : ENTRYPOINT java -jar /mavendockerplugindemo-0.0.1-SNAPSHOT.jar

---> Running in 1840b6345566

---> ff415c0f2d72

Removing intermediate container 1840b6345566

Successfully built ff415c0f2d72

[INFO] Built 192.168.119.148:5000/mavendockerplugindemo:0.0.1-SNAPSHOT

[INFO] Tagging 192.168.119.148:5000/mavendockerplugindemo:0.0.1-SNAPSHOT with 0.0.1-SNAPSHOT

[INFO] Pushing 192.168.119.148:5000/mavendockerplugindemo:0.0.1-SNAPSHOT

The push refers to a repository [192.168.119.148:5000/mavendockerplugindemo]

[WARNING] Failed to push 192.168.119.148:5000/mavendockerplugindemo:0.0.1-SNAPSHOT, retrying in 10 seconds (1/5).

[INFO] Pushing 192.168.119.148:5000/mavendockerplugindemo:0.0.1-SNAPSHOT

The push refers to a repository [192.168.119.148:5000/mavendockerplugindemo]

[WARNING] Failed to push 192.168.119.148:5000/mavendockerplugindemo:0.0.1-SNAPSHOT, retrying in 10 seconds (2/5).

[INFO] Pushing 192.168.119.148:5000/mavendockerplugindemo:0.0.1-SNAPSHOT

The push refers to a repository [192.168.119.148:5000/mavendockerplugindemo]

[WARNING] Failed to push 192.168.119.148:5000/mavendockerplugindemo:0.0.1-SNAPSHOT, retrying in 10 seconds (3/5).

[INFO] Pushing 192.168.119.148:5000/mavendockerplugindemo:0.0.1-SNAPSHOT

The push refers to a repository [192.168.119.148:5000/mavendockerplugindemo]

[WARNING] Failed to push 192.168.119.148:5000/mavendockerplugindemo:0.0.1-SNAPSHOT, retrying in 10 seconds (4/5).

[INFO] Pushing 192.168.119.148:5000/mavendockerplugindemo:0.0.1-SNAPSHOT

The push refers to a repository [192.168.119.148:5000/mavendockerplugindemo]

[WARNING] Failed to push 192.168.119.148:5000/mavendockerplugindemo:0.0.1-SNAPSHOT, retrying in 10 seconds (5/5).

[INFO] Pushing 192.168.119.148:5000/mavendockerplugindemo:0.0.1-SNAPSHOT

The push refers to a repository [192.168.119.148:5000/mavendockerplugindemo]

[INFO] ------------------------------------------------------------------------

[INFO] BUILD FAILURE

[INFO] ------------------------------------------------------------------------

[INFO] Total time: 01:00 min

[INFO] Finished at: 2017-12-28T17:26:46-08:00

[INFO] Final Memory: 32M/90M

[INFO] ------------------------------------------------------------------------

[ERROR] Failed to execute goal com.spotify:docker-maven-plugin:0.4.12:build (default-cli) on project mavendockerplugindemo: Exception caught: Put http://192.168.119.148:5000/v1/repositories/mavendockerplugindemo/: dial tcp 192.168.119.148:5000: getsockopt: connection refused -> [Help 1]

[ERROR]

[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.

[ERROR] Re-run Maven using the -X switch to enable full debug logging.

[ERROR]

[ERROR] For more information about the errors and possible solutions, please read the following articles:

[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

錯誤信息中有這么一句:Failed to push …,看起來是連不上私有倉庫,登錄到私有倉庫的機器上去看了以下,果然,docker容器沒有啟動呢…

執行命令docker start docker-registry將私有倉庫的服務容器啟動,再回到構建服務的機器上,再執行一次構建命令,這次成功了,如下:

[INFO] Building image 192.168.119.148:5000/mavendockerplugindemo:0.0.1-SNAPSHOT

Step 1/3 : FROM java:8u111-jdk

---> d23bdf5b1b1b

Step 2/3 : ADD /mavendockerplugindemo-0.0.1-SNAPSHOT.jar //

---> a033c632d0b0

Removing intermediate container 1d702736fae4

Step 3/3 : ENTRYPOINT java -jar /mavendockerplugindemo-0.0.1-SNAPSHOT.jar

---> Running in c3e4a2a41936

---> 649774e8dc21

Removing intermediate container c3e4a2a41936

Successfully built 649774e8dc21

[INFO] Built 192.168.119.148:5000/mavendockerplugindemo:0.0.1-SNAPSHOT

[INFO] Tagging 192.168.119.148:5000/mavendockerplugindemo:0.0.1-SNAPSHOT with 0.0.1-SNAPSHOT

[INFO] Pushing 192.168.119.148:5000/mavendockerplugindemo:0.0.1-SNAPSHOT

The push refers to a repository [192.168.119.148:5000/mavendockerplugindemo]

7b4f222745df: Pushed

35c20f26d188: Layer already exists

c3fe59dd9556: Layer already exists

6ed1a81ba5b6: Layer already exists

a3483ce177ce: Layer already exists

ce6c8756685b: Layer already exists

30339f20ced0: Layer already exists

0eb22bfb707d: Layer already exists

a2ae92ffcd29: Layer already exists

0.0.1-SNAPSHOT: digest: sha256:4c8d5489bcb99ec1c0884adfdeeb25e5706de8f940c406c5a560243681b01831 size: 2212

null: null

[INFO] ------------------------------------------------------------------------

[INFO] BUILD SUCCESS

[INFO] ------------------------------------------------------------------------

[INFO] Total time: 12.760 s

[INFO] Finished at: 2017-12-28T17:36:25-08:00

[INFO] Final Memory: 32M/88M

[INFO] ------------------------------------------------------------------------

在用于構建鏡像的虛擬機和作為鏡像倉庫的虛擬機上,分別執行

推送到內網私有倉庫的實戰已經完成,接下來我們試試推送到阿里云鏡像倉庫吧;

注冊和登錄阿里云

使用阿里云鏡像倉庫前,需要在阿里云網站注冊一個賬號,請您自行完成注冊登錄,此處不贅述了;

創建命名空間和鏡像倉庫

在阿里云首頁的”產品”菜單下,找到"容器鏡像服務",然后點擊跳轉,如下圖:

新的頁面中,點擊"管理控制臺",如下圖:

在控制臺頁面中,按照下圖操作,創建一個命名空間bolingcavalry:

在控制臺頁面中,按照下圖操作,選一個近的倉庫,再點擊"創建鏡像倉庫"按鈕開始創建鏡像倉庫:

參考下圖的步驟填寫表單,創建一個倉庫:

如下圖,創建完畢后就能在列表頁面看見了,注意紅框所示,一定要選擇和創建時一樣的地區,否則在列表中看不見剛剛創建的倉庫:

修改maven的配置文件

回到虛擬機上,打開文件/opt/apache-maven-3.3.3/conf/settings.xml,找到節點,在里面添加一個server節點,內容如下:

docker-aliyun

12345678@qq.com

abcdef

12345678@qq.com

請參照注釋的提示,將您在阿里云上的賬號密碼都填寫到對應位置;

pom配置信息

在java web工程的目錄下新建一個pom_4_ali_server.xml文件,內容和pom_1_by_param.xml文件的一模一樣,然后再對pom_4_ali_server.xml文件做以下修改:

阿里云鏡像倉庫列表頁面中,我們創建的鏡像倉庫的地址是"registry.cn-shenzhen.aliyuncs.com/bolingcavalry/mavendockerplugindemo",現在把這個字符串拆成三部分,將前面兩部分作為兩個屬性放入pom文件的節點中,屬性名分別是docker.repostory和

UTF-8

UTF-8

1.8

registry.cn-shenzhen.aliyuncs.com

bolingcavalry

新增serverId節點,內容是之前修改的maven配置文件中,server節點的id,如下:docker-aliyun

新增registryUrl節點,內容是私有倉庫地址,如下:${docker.repostory}

新增pushImage節點,內容如下:true

修改imageName節點的內容,改為私有倉庫地址和端口,再加上鏡像id和TAG,如下:${docker.repostory}/${docker.registry.name}/${project.artifactId}:${project.version}

構建并推送到阿里云鏡像倉庫

執行以下命令開始構建:

mvn -f pom_4_ali_server.xml clean package -DskipTests docker:build

構建完成后的輸出信息如下,表示推送成功了:

[INFO] Building image registry.cn-shenzhen.aliyuncs.com/bolingcavalry/mavendockerplugindemo:0.0.1-SNAPSHOT

Step 1/3 : FROM java:8u111-jdk

---> d23bdf5b1b1b

Step 2/3 : ADD /mavendockerplugindemo-0.0.1-SNAPSHOT.jar //

---> f912a6c9134c

Removing intermediate container a05fb50d6235

Step 3/3 : ENTRYPOINT java -jar /mavendockerplugindemo-0.0.1-SNAPSHOT.jar

---> Running in 1c71545bdd60

---> fa4eee94dae6

Removing intermediate container 1c71545bdd60

Successfully built fa4eee94dae6

[INFO] Built registry.cn-shenzhen.aliyuncs.com/bolingcavalry/mavendockerplugindemo:0.0.1-SNAPSHOT

[INFO] Tagging registry.cn-shenzhen.aliyuncs.com/bolingcavalry/mavendockerplugindemo:0.0.1-SNAPSHOT with 0.0.1-SNAPSHOT

[INFO] Pushing registry.cn-shenzhen.aliyuncs.com/bolingcavalry/mavendockerplugindemo:0.0.1-SNAPSHOT

The push refers to a repository [registry.cn-shenzhen.aliyuncs.com/bolingcavalry/mavendockerplugindemo]

1efab0de4a7d: Pushed

35c20f26d188: Pushed

c3fe59dd9556: Pushed

6ed1a81ba5b6: Pushed

a3483ce177ce: Pushed

ce6c8756685b: Pushed

30339f20ced0: Pushed

0eb22bfb707d: Pushed

a2ae92ffcd29: Pushed

0.0.1-SNAPSHOT: digest: sha256:89062f267fe22df3acc5d6ca7405140162e43076aeda5f7584dbf80fcdc0c58b size: 2212

null: null

[INFO] ------------------------------------------------------------------------

[INFO] BUILD SUCCESS

[INFO] ------------------------------------------------------------------------

[INFO] Total time: 01:28 min

[INFO] Finished at: 2017-12-29T02:45:05-08:00

[INFO] Final Memory: 34M/83M

[INFO] ------------------------------------------------------------------------

在阿里云網頁查看

打開阿里云鏡像倉庫管理頁面,如下圖:

點擊"鏡像版本",在列表中可以看到該鏡像的版本,以及最后的上傳時間,和我們的構建結果都是一致的,如下圖:

下載并驗證鏡像

在虛擬機上用docker rmi 鏡像名稱:鏡像版本命令將所有的鏡像刪除干凈,如果有容器還未刪除,就要先刪除容器再刪除鏡像,查看容器的命令是docker ps -a,刪除容器的命令是docker rm 容器名;

如下圖,在管理頁面點擊“基本信息”,可以看見登錄阿里云鏡像倉庫和下載鏡像的命令,在虛擬機上先執行登錄命令,會要求輸入密碼,輸入后登錄成功:

執行下載鏡像的命令,如下,將我們之前上傳的鏡像下載下來:docker pull registry.cn-shenzhen.aliyuncs.com/bolingcavalry/mavendockerplugindemo:0.0.1-SNAPSHOT

輸出信息如下,表示下載成功:

root@docker-app:/usr/local/work/mavendockerplugindemo# docker pull registry.cn-shenzhen.aliyuncs.com/bolingcavalry/mavendockerplugindemo:0.0.1-SNAPSHOT

0.0.1-SNAPSHOT: Pulling from bolingcavalry/mavendockerplugindemo

e12c678537ae: Already exists

8d9ed335b7db: Already exists

3318dd58ae60: Already exists

624ba6156166: Already exists

c7a02d193df7: Already exists

813b62320378: Already exists

81cf5426393a: Already exists

0a2b7222259b: Already exists

fadb940064b4: Pull complete

Digest: sha256:89062f267fe22df3acc5d6ca7405140162e43076aeda5f7584dbf80fcdc0c58b

Status: Downloaded newer image for registry.cn-shenzhen.aliyuncs.com/bolingcavalry/mavendockerplugindemo:0.0.1-SNAPSHOT

執行如下命令,用下載的鏡像創建一個容器:docker run --name demo003 -p 8080:8080 registry.cn-shenzhen.aliyuncs.com/bolingcavalry/mavendockerplugindemo:0.0.1-SNAPSHOT

輸出信息會提示啟動成功,這時候在當前電腦上打開瀏覽器,輸入"http://192.168.119.155:8080/",可以看見web工程的controller的返回信息了,如下圖:

結束

至此,maven構建docker鏡像的三部曲就全部結束了,希望對您熟悉和使用docker-maven-plugin插件有所幫助,另外,本文中用到的pom_3_inner_server.xml和pom_4_ali_server.xml文件,我已上傳到git上本次實戰的web工程中,地址是:git@github.com:zq2599/blog_demos.git,瀏覽器訪問地址是:https://github.com/zq2599/blog_demos,這里面有多個工程,本次實戰用到的是mavendockerplugindemo,如下圖紅框所示:

歡迎關注我的公眾號:程序員欣宸

總結

以上是生活随笔為你收集整理的在内网中使用maven_maven构建docker镜像三部曲之三:推送到远程仓库(内网和阿里云)-Go语言中文社区...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。