1. 程式人生 > >使用docker-maven-plugin外掛構建和推送Docker映像

使用docker-maven-plugin外掛構建和推送Docker映像

需求

我用idea寫的程式碼,然後,利用docker-maven-plugin 外掛,希望執行通過mvn clean package docker:build命令,將程式碼構建成Docker映象,直接推送到我的本地虛擬機器centos下的docker環境下,可以直接用docker命令執行。

新增外掛

pom.xml 檔案新增docker-maven-plugin 外掛

        <plugin>
                <groupId>com.spotify</groupId>
                <artifactId
>
docker-maven-plugin</artifactId> <version>0.4.13</version> <configuration> <imageName>olysa/bootdo:1.0.2</imageName> <baseImage>java</baseImage> <entryPoint>
["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint> <dockerHost>http://192.168.56.102:2375</dockerHost> <resources> <resource> <targetPath>/</targetPath> <directory
>
${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin>

<dockerHost>http://192.168.56.102:2375</dockerHost> 這裡要注意:
1. 有的文件用的https協議,我這本地的,如果用https協議,會報Unrecognized SSL message, plaintext connection?,根據自己的情況而定。
2. http://192.168.56.102:2375 需要填寫你的centos ip地址,並且防火牆啟用centos上的2375埠。如何開放埠請移步iptables 開放防火牆埠

docker開啟遠端訪問

如果沒有開啟遠端訪問,會報 Connect to 192.168.56.102:2375 [/192.168.56.102] failed: Connection refused: connect

  • /usr/lib/systemd/system/docker.service,配置遠端訪問。主要是在[Service]這個部分,加上下面兩個引數:
cd /usr/lib/systemd/system

vi docker.service

ExecStart=
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

  • docker重新讀取配置檔案,重新啟動docker服務。
systemctl daemon-reload  //重新讀取配置檔案

systemctl restart docker //重新啟動服務

構建Docker映象

  • 準備工作都最配好了,在idea工程下pom.xm檔案目錄下,執行以下程式碼,構建Docker映象。
mvn clean package docker:build

安靜等一段時間構建完成後,去centos下,檢視映象。執行docker images

可以看到,配置的程式碼已經構建成映象檔案,並上傳到虛擬機器裡面了。

啟動映象

docker run -d -p 8000:8089 olysa/bootdo:1.0.2  //8089是我程式碼中的port,8000是對映埠

再訪問 http://192.168.56.102:8000之前,記得開啟防火牆8000 埠。

iptables -I INPUT -p tcp --dport 8000 -j ACCEPT   //當前生效,重啟虛擬機器後又失效了

涉及到的一些docker命令就不多解釋了,你可以參考我的另一篇文章 Docker常用命令