鉴于在网上没有搜到一个完整实例,自己摸索后,记录如下:
1、当执行docker push命令将镜像push到registry服务上时,镜像的tag沿用本地的tag一并push到registry上,所以,你必须先确认本地镜像的tag名字是否合适,不合适,用docker tag命令改一下。
docker image tag rhel-httpd:latest registry-host:5000/myadmin/rhel-httpd:latest
docker image push registry-host:5000/myadmin/rhel-httpd:latest
具体见:https://docs.docker.com/engine/reference/commandline/push/
2、docker push命令执行需要认证。毕竟不是所有人都能向registry服务端push镜像,registry也需要対用户进行鉴权。docker客户端先登录registry(或含有该registry的认证),如先执行docker login,或者直接去改认证文件,不是本篇重点,不再话下。
3、插件io.fabric8 docker maven plugin 的用法:
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.33.0</version>
<configuration>
<images>
<image>
<!-- 指定image的名字(包含registry地址)-->
<name>registry的地址/项目:${TAG}</name>
<!-- 别名为master,不关键-->
<alias>master</alias>
<build>
<!-- 指定dockerfile文件的位置-->
<dockerFile>dir/Dockerfile</dockerFile>
<buildOptions>
<!-- 网络的配置,与宿主主机共端口号-->
<network>host</network>
</buildOptions>
</build>
</image>
<!-- 生成多个image同理-->
<image>
...
</image>
</images>
<authConfig>
<!-- registry服务的认证-->
<username>认证的用户名</username>
<password>认证的密码</password>
</authConfig>
</configuration>
<executions>
<execution>
<id>docker-exec</id>
<!-- 绑定mvn install阶段,当执行mvn install时 就会执行docker build 和docker push-->
<phase>install</phase>
<goals>
<goal>build</goal>
<goal>push</goal>
</goals>
</execution>
</executions>
</plugin>