不用安裝docker也能構建docker映象
前提
- 容器映象倉庫
這裡舉例可以公用的兩個
前言
本文主要介紹的是google開源的一個java領域的docker構建工具jib.
目前在上的start有8.5k,fork有784,是一款非常方便的java領域docker構建工具.
亮點是不需要Docker daemon,意味著即使本地沒有安裝docker也能透過jib構建docker映象,並且可以構建符合規範的映象.
官方支援三種方式:
本文使用的是springboot專案透過maven外掛的方式進行講述.
講一下第三種,jib程式碼庫,這種方式可以用於自研平臺構建java的docker服務.
配置pom.xml
新增下面這段標準標籤到檔案中
<build>
<plugins>
...
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>2.0.0</version>
<configuration>
<from>
<image>registry.cn-hangzhou.aliyuncs.com/dragonwell/dragonwell8:8.1.1-GA_alpine_x86_64_8u222-b67</image>
</from>
<to>
<image>imageName</image>
</to>
</configuration>
</plugin>
...
</plugins>
</build>
上述內容配置了一個結果映象名稱imageName
,也就是最終構建成的docker映象地址,包含容器倉庫地址/映象名稱:版本號
例如registry.cn-beijing.aliyuncs.com/lyp/lanbox:v1.0
,如果倉庫地址不填則預設為.
另外還配置了一個基礎映象registry.cn-hangzhou.aliyuncs.com/dragonwell/dragonwell8:8.1.1-GA_alpine_x86_64_8u222-b67
,可以認為等同於Dockerfile中的From語句.
如果基礎映象或目標映象需要賬號密碼的話,在from標籤或to標籤新增一個認證資訊即可,有三種方式:
- 配置在docker的配置檔案中
- 配置在maven的setting.xml中
- 直接在pom.xml檔案配置
本文使用第三種,即在from標籤或to標籤下新增一個用於認證資訊的auth標籤,例如:
<from>
...
<auth>
<username>kafeidou</username>
<password>kafeidou</password>
<auth>
...
</from>
也可以方便的透過環境變數的方式進行配置:
<from>
...
<auth>
<username>${env.REGISTRY_FROM_USERNAME}</username>
<password>${env.REGISTRY_FROM_PASSWORD}</password>
<auth>
...
</from>
其中${env.}
這一部分是固定的,後面跟著實際環境變數.
還可以透過系統屬性的方式:
mvn compile jib:build
-Djib.to.image=myregistry/myimage:latest
-Djib.to.auth.username=kafeidou
-Djib.to.auth.password=kafeidou
在進行構建時透過引數方式傳遞認證資訊,是不是很方便呢?
繼續看configuration
下的標籤有container
配置:
這個標籤主要配置目標容器相關的內容,比如:
- appRoot -> 放置應用程式的根目錄,用於war包專案
- args -> 程式額外的啟動引數.
- environment -> 用於容器的環境變數
- format -> 構建OCI規範的映象
- jvmFlags -> JVM引數
- mainClass -> 程式啟動類
- ports -> 容器開放埠
…
還有其他內容具體可以參考.
有一個注意點是阿里的容器映象服務不支援OCI映象,所以如果選擇使用阿里的容器映象服務記得將OCI格式取消,預設是取消的.
另外,JVM引數可以透過環境變數配置動態內容,所以不需要計劃將所有啟動引數寫死在jvmFlags
標籤裡面.
例如啟動容器時指定使用G1回收器,docker run -it -e JAVA_TOOL_OPTIONS="-XX:+UseG1GC" -d registry.cn-beijing.aliyuncs.com/lyp/lanbox:v1.0
.
所有配置項完成後執行mvn命令mvn compile jib:build
開始構建docker映象.
如果看到類似這樣的資訊說明就成功了:
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 42.598 s
[INFO] Finished at: 2020-02-18T23:30:53+08:00
[INFO] ------------------------------------------------------------------------
完整的一個例子可以在github上檢視並下載,歡迎多多交流.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2157/viewspace-2824898/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Docker映象構建原理解析(不裝docker也能構建映象)Docker
- docker構建映象Docker
- docker構建supervisor映象Docker
- Docker 構建 kubectl 映象Docker
- Docker映象構建(五)Docker
- docker安裝mysql映象DockerMySql
- docker 構建自己的映象Docker
- Docker 映象構建之 DockerfileDocker
- centos 下docker映象安裝CentOSDocker
- Docker 構建多平臺映象Docker
- Docker構建多平臺映象Docker
- Docker 構建PHP 映象環境DockerPHP
- Docker 映象分階段構建Docker
- Docker 分階段構建映象Docker
- 沒有JDK和Maven,用Docker也能構建Maven工程JDKMavenDocker
- ubuntu 使用aliyun映象安裝 dockerUbuntuDocker
- 安裝 Docker-yum-阿里雲映象Docker阿里
- docker:安裝centos7映象(六)DockerCentOS
- docker映象構建libreoffice轉換檔案Docker
- 構建 Docker 映象的 N 個小技巧Docker
- 製作一個能構建 dotnet AOT 的 gitlab runner 的 Debian docker 映象GitlabDocker
- 製作一個能構建 dotnet AOT 的 gitlab ruuner 的 Debian docker 映象GitlabDocker
- SpringBoot 構建 Docker 映象的最佳 3 種方式Spring BootDocker
- Docker從零構建php-nginx-alpine映象DockerPHPNginx
- docker構建Docker
- Ubuntu安裝和配置Docker-CE映象加速UbuntuDocker
- CentOS7安裝Docker並配置映象加速CentOSDocker
- docker:映象構建、倉庫、壓縮、匯入 二Docker
- 使用Docker buildx 為 .NET 構建多平臺映象DockerUI
- 使用 Docker 開發 - 使用多階段構建映象Docker
- Docker容器 關於映象構建的安全問題Docker
- apisix閘道器-構建docker映象構建及外掛化開發APIDocker
- Docker架構及在Centos7上安裝dockerDocker架構CentOS
- Docker映象構建:技術深度解析與實踐指南Docker
- Docker Buildx使用教程:使用Buildx構建多平臺映象DockerUI
- 構建 Go 應用 docker 映象的十八種姿勢GoDocker
- Jenkins中構建(Build)Docker映象時出現permission deniedJenkinsUIDocker
- 將本地安裝的Python庫整合到Docker映象PythonDocker