使用dockerfile-maven-plugin發佈docker到私有倉庫

要想擁有私有docker倉庫,須要安裝registry鏡像,最新版是2.0,具體能夠看文檔:https://docs.docker.com/registry/java

1. docker pull registryspring

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

使用http://localhost:5000/v2/測試,返回"{}",表示安裝成功。apache

使用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 refusedwindows

1. 首先確保,配置的docker.image.prefix時正確的,即配置了綁定倉庫。centos

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),可能須要重啓系統。maven

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

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端口沒有對位暴漏。

須要增長2375端口對外暴漏,使用以下命令:

//添加端口
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列,已添加。

相關文章
相關標籤/搜索