第一部分 docker 安装私有仓库,并推送镜像到私有仓库.
1, 安装 docker toolbox,比较简单下一步,下一步,此处不做过多详述.
2,安装完之后 执行 命令 查看监听端口 netstat -tlunp ,查看 代理端口2376是否打开.(windows默认都是打开的)
3, 搭建仓库(从上往下执行)
1)[root@localhost ~]# docker pull registry
2)[root@localhost ~]# docker run -d -v /registry:/var/lib/registry -p 5000:5000 --restart=always --privileged=true -- name registry registry:latest
执行成功则私有仓库搭建成功
4, 往私有仓库push镜像.
1)拉取镜像文件
[root@localhost ~]# docker pull hello-world
2)给镜像打tag.(这一步是必须的,前缀也是有意义的, 暂时以本机IP为例子. docker安装在本机上)
[root@localhost ~]# docker tag hello-world 10.0.7.152:5000/hello-world:latest
3)push镜像
[root@localhost ~]# docker push 10.0.7.152:5000/hello-world:latest
发现会报以下错误:The push refers to a repository [10.0.7.152:5000/hello-world]
Get https://10.0.7.152:5000/v1/_ping: http: server gave HTTP response to HTTPS client
原因是docker私有仓库服务器,默认是基于https传输的,所以我们需要在docker做相关设置,不使用https 传输
[root@localhost ~]# vi /etc/docker/daemon.json 如下图
4,重启docker 重新push 发现成功
查看私有仓库镜像 :1浏览器访问或者default里面 curl方法,http://10.0.7.152:5000/v2/_catalog
curl http://10.0.7.152:5000/v2/_catalog
2, ls /registry/docker/registry/v2/repositories
第二部分 ide 自动打包java应用,打包镜像 并推送镜像到私有仓库. (暂时以eclipse为例);
1,编写一个springboot的hello world 应用,(此处不做叙述比较简单).
2,配置pom 文件.
<!-- 绑定仓库地址 -->
<docker.image.prefix>10.0.7.152:5000</docker.image.prefix>
<!--编译部分配置 -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.0</version>
<configuration>
<forceTags>true</forceTags>
<imageName>${docker.image.prefix}/test4</imageName>
<repository>${docker.image.prefix}/test4</repository>
<buildArgs>
<JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
<!-- <serverId>docker-hub</serverId>
<registryUrl>https://${docker.image.prefix}/v2/</registryUrl> -->
</configuration>
</plugin>
</plugins>
</build>
3,编写dockerfile文件
1)路径放到根目录
2)内容如下
#指定以openjdk:8-jre 为基础镜像,来构建此镜像,可以理解为运行的需要基础环境
FROM openjdk:8-jre
# 挂载目录,默认的安装jar包位置:/tmp
VOLUME /tmp
# 将上一步的jar包copy到镜像中的根目录,并重命名为app.jar
ARG JAR_FILE
#将当前jar 复制到容器根目录下
COPY ${JAR_FILE} app.jar
#暴露容器端口为50051 Docker镜像告知Docker宿主机应用监听了50051端口
EXPOSE 3005
# 启动jar包(可根据自己项目复杂度调整)
ENTRYPOINT ["java","-jar","/app.jar"]
3)mvn执行命令
package dockerfile:build dockerfile:push
4) 提示build SUCCESS(第一次执行比较慢,需要下载 jdk镜像,请耐心等待)
去查看镜像是否推送成功
http://10.0.7.152:5000/v2/_catalog
ps: 上文 dockerflie 中FROM openjdk:8-jre 默认使用的是公有镜像,使用自己私有镜像作为基础镜像可以改成如下写法
FROM 10.0.7.158:5000/jdk1.8:v1.0
结语: 私有仓库上传镜像可以配置用户,密码权限,本文就不做陈述了,可以到网上找例子,本文仅仅针对入门级人群,各个操作步骤的含义,可以后续网上查询.
有疑问,请求留言 有问题,欢迎可以加QQ 1360215811 交流