docker搭建私有仓库
- 2019 年 12 月 31 日
- 筆記
文章目录
1.4. Docker Maven插件自动上传镜像到私有仓库
Docker私有仓库
步骤
docker pull registry
docker run --name registry -p 5000:5000 -d registry
- 启动完成后访问
http:// 192.168.174.130:5000/v2/_catalog
即可看到如下的内容说明启动成功:
{ "repositories": [] }
- 添加信任(无论是下载还是上传都需要添加,这里的ip和端口指定的是私有仓库的宿主机的ip):
vim /etc/docker/daemon.json
,添加如下的内容:
"insecure-registries":["192.168.174.130:5000"]
- 重启docker ,
systemctl restart docker
上传镜像到私有仓库
docker tag jdk8 192.168.174.130:5000/jdk8
: 标记该镜像- 指定仓库所在的ip和端口号
- 第一个jdk8是当前的镜像名称(或者填Id),后一个是上传到仓库中的名字,可以任意起
docker images
:此时查看镜像,发现多了一个192.168.174.130:5000/jdk8
的镜像docker push 192.168.174.130:5000/jdk8
:将标记的镜像上传到私有仓库中- 此时再次访问
http:// 192.168.174.130:5000/v2/_catalog
,将会看到如下内容
{ "repositories": [ "jdk8" ] }
下载镜像
- 添加信任
- vim /etc/docker/daemon.json`,添加如下的内容:
"insecure-registries":["192.168.174.130:5000"]
- 重启docker ,
systemctl restart docker
- 下载,需要指定ip和端口:
docker pull 192.168.174.130:5000/jdk8
Docker Maven插件自动上传镜像到私有仓库
步骤
仓库所在服务器的配置
- 添加信任,同上
- 修改
/etc/sysconfig/docker
文件:vim /etc/sysconfig/docker
- 在最下面添加一行
DOCKER_OPTS='-H unix:///var/run/docker.sock -H 0.0.0.0:2375'
- 在最下面添加一行
vim /lib/systemd/system/docker.service
添加如下内容- 执行下面的命令刷新配置并且重启docker
systemctl daemon-reload systemctl restart docker
- 开启防火墙的端口:
firewall-cmd --zone=public --add-port=2375/tcp --permanent
- 重新载入配置
firewall-cmd --reload
项目中的配置
- 在pom.xml文件中添加如下内容:
<build> <!-- 指定的最终打成jar包的名字 --> <finalName>demo</finalName> <plugins> <!-- SpringBoot的maven插件 --> <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:端口/image_name`的格式--> <imageName>192.168.174.130:5000/${project.artifactId}:${project.version}</imageName> <!-- 指定基础镜像,不需要运行,相当于 from hub.c.163.com/library/java:8-alpine --> <baseImage>hub.c.163.com/library/java:8-alpine</baseImage> <!--覆盖相同标签镜像--> <forceTags>true</forceTags> <!-- 运行jar包 --> <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> <!-- 指定私有仓库所在服务器的2375端口,之前配置过可以远程访问的那个 --> <dockerHost>http://192.168.174.130:2375</dockerHost> </configuration> </plugin> </plugins> </build>
- 在命令台运行如下的命令,即可完成生成镜像并且上传到私有仓库
mvn clean package docker:build -DpushImage
- 上述命令的解析如下:
mvn clean package
:maven打jar包docker:build
:docker构建镜像的命令-DpushImage
: 将生成的镜像上传到私有仓库中
- 执行并且运行成功之后访问
http://192.168.174.130:5000/v2/_catalog
,将会出现如下的内容
{ "repositories": [ "demo" ] }
- 访问
http://192.168.174.130:5000/v2/demo/tags/list
,可以看到demo这个镜像的所有版本

- 上面的运行完成之后,查看项目中自动生成Dockerfile,如下:
FROM hub.c.163.com/library/java:8-alpine ADD /demo.jar // ENTRYPOINT ["java", "-jar", "/demo.jar"]
拉取上传的镜像并且运行
- 在拉取之前需要添加信任
- 使用
docker pull 192.168.174.130:5000/demo:0.0.1-SNAPSHOT
下载仓库中的镜像 - 运行镜像:
docker run --name demo -p 7001:7001 -d f7f36f3f3f06
- 其中生成的镜像端口为项目自己本身配置的端口,只需要映射出去即可
- 此时我们可以访问
http://192.168.174.128:7001/
,就能看到eureka注册中心的页面