侧边栏壁纸
博主头像
zzzgd博主等级

一忘皆空!

  • 累计撰写 18 篇文章
  • 累计创建 11 个标签
  • 累计收到 15 条评论

Idea中使用docker插件操作Harbor私库pull,push镜像

zzzgd
2021-07-14 / 0 评论 / 0 点赞 / 323 阅读 / 4,730 字
温馨提示:
本文最后更新于 2021-07-14,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

Idea中使用docker插件操作Harbor私库build,pull,push镜像

一. 配置

  1. settings - Build,Execution,Deployment - Docker

    这里如果是安装的docker Desktop, 就直接选Docker for Windows
    在这里插入图片描述

    如果是和Docker Machine一起单独安装的, 这里就选择Docker Machine的安装目录, 如果是服务器, 远程连接, 就选择TCP

  2. 然后是上面Docker菜单下的Docker Registry

在这里插入图片描述

这里要注意, 地址不要带https, 虽然写上https://也能显示connect success, 但是后面pull和push的时候会显示docker: invalid reference format的问题.

二. 操作push和pull

build
  • 方法一: 直接使用idea的docker模板
    打开上面的编译配置, 找到docker模板, 如果不需要直接deploy部署的话. 把下面的run build去掉, 选择我们配置好的docker项, 直接跑
    在这里插入图片描述
    当然也可以在Before launch中增加mvn打包的操作
    在这里插入图片描述
    如果出现idea : Not connected to docker的话, 可以试试删除docker, 再创建试试
    在这里插入图片描述
  • 方法二 使用maven插件
  1. 在dockerfile的模块中的pom中增加插件
    注意这里如果是多模块, 比如parent父模块下有repo模块, service模块, web模块, 我们一般打包的jar包在web模块中, 我们可以把dockerfile放在web模块.
    至于为什么要在对应的dockerfile文件的模块中加这个插件,而不是parent父模块中统一加, 是因为父模块在编译的时候会把子模块一起编译, 子模块没有dockerfile会报错, 虽然可以通过<dockerfile.skip>false</dockerfile.skip>和true来控制, true表示需要dockerfile打包镜像, fasle表示不会判断dockerfile来打包镜像. 但是个人感觉还是独立开来比较好. parent继承下去太麻烦了.
  2. 如果报Must specify baseImage if dockerDirectory is null, 首先检查dockerDirectory, 这个是指dockerfile文件所在的文件夹目录, 可以用相对路径, 如果都在同一个目录, ./就行. 如果目录是对的, 看看dockerfile中有没有写from java:8这样的, 或者直接在pom中配置基础镜像<baseImage>jdk:1.8</baseImage>
  3. 注意配置dockerHost, 如果是windows本地就是默认2375端口, 如果是远程则填写远程docker地址
<!-- docker插件 -->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.2.2</version>
                <!--将插件绑定在某个phase执行-->
                <!--                <executions>-->
                <!--                    <execution>-->
                <!--                        <id>build-image</id>-->
                <!--                        &lt;!&ndash;用户只需执行mvn package ,就会自动执行mvn docker:build&ndash;&gt;-->
                <!--                        <phase>package</phase>-->
                <!--                        <goals>-->
                <!--                            <goal>build</goal>-->
                <!--                        </goals>-->
                <!--                    </execution>-->
                <!--                </executions>-->
                <configuration>
                    <!--                    <serverId>harbor</serverId>-->
                    <!--                    <registryUrl>http://${docker.repostory}</registryUrl>-->
                    <!-- 镜像名称-->
                    <imageName>${project.artifactId}:${project.version}</imageName>
                    <!--指定标签 这里指定的是镜像的版本,我们默认版本是latest-->
                    <imageTags>
                        <imageTag>T-${maven.build.timestamp}</imageTag>
                    </imageTags>
                    <!--必须配置dockerHost标签(除非配置系统环境变量DOCKER_HOST),windows本地装的docker一般是localhost:2375-->
                    <dockerHost>http://localhost:2375</dockerHost>
                    <!--指定基础镜像jdk1.8-->
                    <baseImage>jdk:1.8</baseImage>
                    <dockerDirectory>src/main/docker</dockerDirectory>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                    <skip>true</skip>
                </configuration>
            </plugin>
  1. 先正常package打包
  2. 点击docker插件的build按钮
    在这里插入图片描述
pull

打开idea下面的Services标签, 可以看到我们配置的docker

在这里插入图片描述

在images上右键, 选择pull

在这里插入图片描述

如果是公共仓库的镜像, 可以直接搜索

在这里插入图片描述

如果是私库中的镜像, 格式为:仓库地址(不要https)/项目名/镜像:标签

在这里插入图片描述

push

在docker标签中的images找到我们需要push的镜像, 右键, 选择push

在这里插入图片描述

填写信息

在这里插入图片描述

这里注意, Repository的格式是 项目名/镜像名

前提是需要先在管理后台创建这个项目

在这里插入图片描述

0

评论区