使用dockerfile-maven-plugin发布docker到私有仓库

Posted feiyujun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用dockerfile-maven-plugin发布docker到私有仓库相关的知识,希望对你有一定的参考价值。

要想拥有私有docker仓库,需要安装registry镜像,最新版时2.0,具体可以看文档:https://docs.docker.com/registry/

1. docker pull registry

2. docker run -d -p 5000:5000 --restart=always --name registry registry:2

使用http://localhost:5000/v2/测试,返回"{}",表示安装成功。

使用maven命令(mvn clean package)打包时,报:Failed to execute goal com.spotify:docker-maven-plugin:0.4.13:build (default-cli) on project config: Exception caught: java.util.concurrent.ExecutionException: com.spotify.docker.client.shaded.javax.ws.rs.ProcessingException: org.apache.http.conn.HttpHostConnectException: Connect to localhost:2375 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused

1. 首先确保,配置的docker.image.prefix时正确的,即配置了绑定仓库。

1     <properties>
2         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
3         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
4         <java.version>1.8</java.version>
5         <maven.test.skip>true</maven.test.skip>
6         <spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
7         <dockerfile.maven.version>1.4.3</dockerfile.maven.version>
8         <docker.image.prefix>172.27.73.xx:5000</docker.image.prefix>
9     </properties>

2. 编辑/etc/sysconfig/docker文件,我安装的docker ce,没有发现这个文件,如果有,则:

sudo vi /etc/sysconfig/docker

//添加下面这行
other_args="-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock"

//保存
:wq!
 
//重启docker服务
service docker restart

3.  在windows系统环境变量中新建DOCKER_HOST值为tcp://{docker_ip}:2375,将这里的{docker_ip},替换为docker所在的centos服务器IP或主机名(用主机名,需要windows配置hosts),可能需要重启系统。

4. 修改/usr/lib/systemd/system/docker.service文件

sudo vi /usr/lib/systemd/system/docker.service
//在ExecStart这一行后面加上(这里就写4个0,别改成自己的ip) 
-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
 
改完后效果如下
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
 
:wq!
保存退出

重新加载配置文件 systemctl daemon-reload
重启docker :service docker restart
这样才可以是/etc/default/docker中的配置项生效

重写打包,发布镜像,报:

Caused by: com.spotify.docker.client.exceptions.DockerException: java.util.concurrent.ExecutionException: com.spotify.docker.client.shaded.javax.ws.rs.ProcessingException: com.spotify.docker.client.shad
ed.org.apache.http.conn.HttpHostConnectException: Connect to 172.27.73.xx:2375 [/172.27.73.xx] failed: Connection timed out: connect

我们首先查询docker所在虚拟机在监听哪些端口,使用命令:

netstat -tlunp

显示:

tcp6       0      0 :::2375                 :::*                    LISTEN      -

2375端口,已在监听。

那很有可能时防火墙的问题,在CentOS7中,默认会打开firewalld防火墙,如果防火墙打开后,默认情况下只会监听在22号端口,也就是说主机对外暴露的端口只有22。

使用如下命令:

sudo iptables-save

查看防火墙暴漏的对外端口,发现2373端口没有对位暴漏。

需要增加2373端口对外暴漏,使用如下命令:

//添加端口
  sudo firewall-cmd --zone=public --add-port=2375/tcp --permanent
//重载防火墙
sudo firewall-cmd --reload

看到sucess字样后,再使用iptables-save命令查看端口,可以看到,对外放开的端口增加了2375端口。

这次重新打包,发布成功。

使用命令:

docker images

查看到新打包的镜像,注意172.27.73.xx:5000开头的REPOSITORY列,已添加。

以上是关于使用dockerfile-maven-plugin发布docker到私有仓库的主要内容,如果未能解决你的问题,请参考以下文章

在SpringBoot中使用Docker(利用dockerfile-maven-plugin插件)

如何配置 com.spotify.dockerfile-maven-plugin 在 Docker Toolbox 上运行?

无法执行目标 com.spotify:dockerfile-maven-plugin:1.3.6:build on project 'foo':无法构建映像:

maven 插件 引入dockerfile-maven-plugin 提示无法找到?

构建 Spring Boot 应用程序的 Docker 镜像文件

构建多个maven模块,然后在docker镜像中复制JAR