在 Docker 中,当我们执行 docker pull xxx 的时候 ,它实际上是从 registry.hub.docker.com 这个地址去查找,这就是Docker公司为我们提供的公共仓库。在工作中,我们不可能把企业项目push到公有仓库进行管理。所以为了更好的管理镜像,Docker不仅提供了一个中央仓库,同时也允许我们搭建本地私有仓库。这一篇介绍registry私有仓库搭建。
IP地址:192.168.184.135
1、私有仓库搭建与配置
(1)拉取私有仓库镜像
docker pull registry
(2)启动私有仓库镜像
docker run -di --name=registry -p 5000:5000 registry
(3)打开浏览器输入地址http://192.168.71.129:5000/v2/_catalog看到{"repositiories":[]}表示私有仓库搭建成功并且内容为空。
(4)修改daemon.json
vi /etc/docker/daemon.json
添加以下内容,保存并退出
{"insecure‐registries":["192.168.71.129:5000"]}
此步用于让docker信任私有仓库地址
(5)重启docker服务
systemctl restart docker
2、镜像上传至私有仓库
(1)标记此镜像为私有仓库的镜像
docker tag jdk1.8 192.168.71.129:5000/jdk1.8
(2)再次启动私服容器
docker start registry
(3)上传标记的镜像
docker push 192.168.71.129:5000/jdk1.8
3、配置DockerMaven插件
(1)手动部署
首先源码打成jar或war包,上传至虚拟机并拷贝至JDK容器。
(2)通过Maven插件自动部署
对于数量众多的微服务,手动部署无疑是非常麻烦的做法,并且容易出错。所以需要一种更加简便的方式,Maven插件自动部署。
(3)修改宿主机的docker配置,让其可以远程访问:
vi /usr/lib/systemd/system/docker.service
其中ExecStar=后添加配置-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
修改如下:
(4)刷新配置,重启服务:
systemctl daemon-reload
systemctl restart docker
docker start registry
(5)在项目的pom文件中添加配置
<build>
<finalName>mysql-client</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- docker的maven插件,官网: https://github.com/spotify/docker‐maven‐plugin -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<imageName>192.168.71.129:5000/${project.artifactId}:${project.version} </imageName>
<baseImage>jdk1.8</baseImage>
<entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory} </directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
<dockerHost>http://192.168.71.129:2375</dockerHost>
</configuration>
</plugin>
</plugins>
</build>
以上配置会自动生成Dockerfile
FROM jdk1.8
ADD mysql-client.jar /
ENTRYPOINT["java","-jar","/mysql-client.jar"]
(6)在Idea中的Terminal,输入以下命令,并打包和上传镜像
mvn clean package docker:build -DpushImage
浏览器访问:http://192.168.71.129:5000/v2/_catalog,输出
{"repositories":["tensquare_eureka"]},说明上传成功。
(7)进入宿主机,查看镜像
docker images
(8)启动容器
docker run -di --name=mysql-client -p 8762:8762 192.168.71.129:5000/mysql-client:0.0.1-SNAPASHOT