Docker 搭建私有镜像仓库Registry
一、前言
在日常开发过程中,我们开发的docker镜像不需要公开放到dockerhub中,只想内部共享docker镜像,这时我们就需要搭建自己本地的镜像仓库,以便内容人员的使用。本文主要讲解如何通过本地构建镜像上传到服务器的镜像仓库中。
二、Registry镜像的部署
-
拉取registry镜像
docker pull registry (默认版本:latest )
-
运行registry镜像
docker run -d -p 5000:5000 --restart=always --name registry registry:latest
备注:registry服务默认会将上传的镜像保存在容器的/var/lib/registry如果想将主机的/opt/registry目录挂载到该目录,则执行命令为:
docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest -
查看容器运行情况
docker ps 命令可以查看容器运行情况
访问 curl http://localhost:5000/v2/ 返回{}证明运行成功
三、Docker开启远程API
-
修改docker.service配置文件
vi /usr/lib/systemd/system/docker.service找到文件下属内容:
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Copy to clipboardErrorCopied修改为以下内容:
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock备注:2375端口可自定义
-
Docker支持http上传镜像
echo ‘{ “insecure-registries”:[“ip地址:5000”] }’ > /etc/docker/daemon.json
备注:如果daemon.json存在其他内容,不要用echo,直接去修改该文件 -
执行使配置生效命令
systemctl daemon-reload
四、重启Docker和开放防火墙端口
-
重启Docker
systemctl stop docker
systemctl start docker -
开启防火墙的Docker构建端口
firewall-cmd --zone=public --add-port=2375/tcp --permanent
firewall-cmd --reload
五、基于Maven构建Docker镜像
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.2</version>
<executions>
<execution>
<id>build-image</id>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<dockerHost>http://ip地址:2375</dockerHost>
<imageName>${project.artifactId}:${project.version}</imageName>
<baseImage>java: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>
</configuration>
</plugin>
相关配置说明:
1、executions.execution.phase:此处配置了在maven打包应用时构建docker镜像;
2、imageName:用于指定镜像名称,$ {project.artifactId}为镜像名称,$ {project.version}为仓库名称;
3、dockerHost:打包后上传到的docker服务器地址;
4、baseImage:该应用所依赖的基础镜像,此处为java8;
5、entryPoint:docker容器启动时执行的命令;
6、resources.resource.targetPath:将打包后的资源文件复制到该目录;
7、resources.resource.directory:需要复制的文件所在目录,maven打包的应用jar包保存在target目录下面;
8、resources.resource.include:需要复制的文件,打包好的应用jar包。
六、基于IDEA打包项目并构建镜像上传
然后再服务器上查看镜像是否上传成功
查看镜像命令:docker images
查看镜像仓库已有该镜像证明已成功构建镜像
注:如果本博文有任何错误和建议,欢迎留言,共同学习,共同进步!
下一篇: java注解学习体会,并自己实现一个注解