centOS7 docker私有仓库及DockerMaven插件使用
私有仓库的搭建与配置
拉取私有仓库镜像
1
docker pull registry
启动私有仓库
1
docker run --name=registry -p 5000:5000 -v /home/docker/registry/:/var/lib/registry -d registry
参数说明
–name 容器名称
-p 宿主机端口:容器端口
-v 挂载文件目录
-d 指定镜像打开游览器输入地址
http://你的服务器IP:5000/v2/_catalog
看到{"repositories":[]}
表示私有仓库搭建成功并且内容为空(需要开放服务器端口)修改daemon.json,添加以下内容
{
“registry-mirrors”: [“https://3olr1zha.mirror.aliyuncs.com"],
"insecure-registries": ["你的服务器IP:5000"]
}
1 | vim /etc/docker/daemon.json |
- 重启docker服务
1
systemctl restart docker
- 重启私有容器
1
2
3docker start registry
#查看容器状态
docker ps -l
手动将镜像上传至私有仓库
- 标记镜像为私有仓库镜像
首先将镜像打上私有仓库Tag,如:选择hello-world为例
1 | docker tag hello-world:latest 你的服务器IP:5000/hello-world |
再次查看镜像列表,发现多了一个hello-world
1 | docker images |
- 上传标记的镜像
1
docker pull 你的服务器IP:5000/hello-world
- 完成上传
在游览器输入地址http://你的服务器IP:5000/v2/_catalog
看到该镜像即上传成功
{“repositories”:[“hello-world”]}
DockerMaven插件使用
微服务部署有两种方法:
(1)手动部署
首先基于源码打包生成jar包(或war包),将jar包(或war包)上传至虚拟机并拷贝至JDK容器。
(2)通过Maven插件自动部署
对于数量众多的微服务,手动部署无疑是非常麻烦的做法,并且容易出错。所以我们这
里学习如何自动部署,这也是企业实际开发中经常使用的方法。
- 修改宿主机docker配置,配置远程访问在[Service]下的ExecStart,增加如下配置即可
1
vim /lib/systemd/system/docker.service
1
2
3
4
5
6[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecStart=
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
..... - 刷新配置,重启服务
1
2
3systemctl daemon‐reload
systemctl restart docker
docker start registry - 在maven工程
pom.xml
中增加配置以上配置会自动生成Dockerfile1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27<build>
<finalName>app</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<imageName>服务器IP: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://服务器IP:2375</dockerHost>
</configuration>
</plugin>
</plugins>
</build>1
2
3FROM jdk1.8
ADD app.jar /
ENTRYPOINT ["java","‐jar","/app.jar"]
在项目根目录中执行mav命令mvn clean package docker:build ‐DpushImage
等待完成上传之后,游览器输入地址http://你的服务器IP:5000/v2/_catalog
看到
{“repositories”:[“hello-world”,”你的Maven项目名”]}