使用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 提示无法找到?