idea通过maven使用docker插件生成镜像并推送到harbor仓库

2023-05-16

windows有2种方式获取docker环境,使用VM构建linux环境并安装docker,另一种是安装dockertoolbox,再通过bash的方式创建虚拟的docker环境(本文使用后者)

1、windows7下需要安装docker服务DockerToolbox

参照:https://java-sword.blog.csdn.net/article/details/92799469

下载boot2docker.iso可能很慢,多试几次(照着流程执行还是到github上下载,没有用到阿里云)

安装过程中出现了问题:Failed to instantiate CLSID_VirtualBox w/ IVirtualBox, but CLSID_VirtualBox w/ IUnknown works

解决办法(如果没找到CLSID,直接搜后面那堆数字):

1) win+r 快捷键打开 “运行”,输入regedit 打开注册表

2)找到 HKEY_CLASSES_ROOT\CLSID\{00020420-0000-0000-C000-000000000046}

InprocServer32 修改 第一行(默认)的值为 C:\Windows\system32\oleaut32.dll

3)找到HKEY_CLASSES_ROOT\CLSID\{00020424-0000-0000-C000-000000000046}

InprocServer32  修改 第一行(默认)的值为 C:\Windows\system32\oleaut32.dll

4)完事。(我修改了完了 也没试用,直接重启电脑 然后成功了)

以root用户登录 sudo –i

DockerToolbox创建的docker默认提供https服务,可以在create时通过指定环境变量来提供http服务,如下命令

docker-machine create -d virtualbox --engine-env DOCKER_TLS=no default

参考:https://stackoverflow.com/questions/30717347/docker-machine-create-node-without-tls-verification

创建http服务的另一种方式参照https://github.com/docker/machine/issues/1532

$ docker-machine ssh <machine-id>

$ sudo vi /var/lib/boot2docker/profile # set DOCKER_TLS=no

$ sudo /etc/init.d/docker restart

$ exit

2、maven构建配置

1)插件只是简化构建镜像的操作,真正执行构建镜像还得依赖docker环境,插件在提交镜像时如果直接提交到harbor仓库会报错,自动在DOCKER_HOST后面拼接上/version

Caused by: com.spotify.docker.client.exceptions.DockerRequestException: Request error: GET http://192.168.126.131:5000/version: 404, body: 404 page not found

2)提交到本机的DockerToolbox构建的docker环境

但是DockerToolbox默认的服务是https协议export DOCKER_TLS_VERIFY=1(idea插件不知道怎么配置证书信息,暂考虑将docker服务设置成http的,即配置DOCKER_TLS=no环境变量)

3)使用git bash启动时出现Unable to verify the Docker daemon is listening: Maximum number of retries (10) exceeded,执行下面的命令进行重建:

docker-machine rm -f default

docker-machine create -d virtualbox --engine-env DOCKER_TLS=no default

4)maven配置

借鉴https://blog.csdn.net/fyk844645164/article/details/107878063

构建镜像问题:

a、不能获得镜像ID

之前使用的是docker-maven-plugin,可以指定Dockerfile所在目录,换成dockerfile-maven-plugin 插件后配置成:<dockerfile>src/main/docker/Dockerfile</dockerfile>报错

Failed to execute goal com.spotify:dockerfile-maven-plugin:1.4.10:build (default-cli) on project api-gateway: Execution default-cli of goal com.spotify:dockerfile-maven-plugin:1.4.10:build failed: Could not acquire image ID or digest following build -> [Help 1]

解决办法:把Dockerfile放到项目根目录即pom文件所在目录

b. 没有指定的jar文件

DockerException: ADD failed: stat /mnt/sda1/var/lib/docker/tmp/docker-builder471129736/api-gateway.jar: no such file or directory

即Dockerfile文件以cmd环境进行编写,内容如下:

#基础镜像,如果本地没有,会从远程仓库拉取
FROM openjdk:8-jdk-alpine
#镜像制作人
MAINTAINER chenhj
#在容器中创建挂载点,可以多个VOLUME["/tmp"]
VOLUME /tmp
#声明了容器应该打开的端口并没有实际上将它打开
EXPOSE 8080
#定义参数
ARG JAR_FILE
#拷贝本地文件到镜像中
COPY ${JAR_FILE} app.jar
#指定容器启动时要执行的命令,但如果存在CMD命令,cmd中的参数会被附加到ENTRYPOINT指令的后面
ENTRYPOINT [ "java", "-Djava.security.egd=file:/dev/./urandom", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom", "-jar", "/app.jar" ]

 [INFO]  ---> Using cache

[INFO]  ---> 31624ed83a0a

[INFO] Successfully built 31624ed83a0a

[INFO] Successfully tagged harbor:5000/library/api-gateway:v1.0.0

[INFO]

[INFO] Detected build of image with id 31624ed83a0a

[INFO] Successfully built harbor:5000/library/api-gateway:v1.0.0

[INFO] ------------------------------------------------------------------------

[INFO] BUILD SUCCESS

[INFO] ------------------------------------------------------------------------

[INFO] Total time: 45.347s

[INFO] Finished at: Fri May 14 16:47:53 CST 2021

[INFO] Final Memory: 88M/1024M

[INFO] --------------------------

在docker环境中查看镜像是否构建成功

docker-machine ssh default以ssh方式访问虚拟机

使用docker images可以查看到生成的镜像文件

在maven的settings.xml文件中配置server(私有镜像仓库harbor的信息)

<servers>

         <server>

                   <id>192.168.126.131:5000</id>

                   <username>harbor</username>

                   <password>Harbor12345</password>

                   <configuration>

                            <email>595077052@qq.com</email>

                   </configuration>

         </server>

</servers>

执行推送时报exceptions.DockerException: Get https://harbor:5000/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

docker服务器默认使用https请求远程仓库,编辑daemon.json,添加

vi /etc/docker/daemon.json

{

  "registry-mirrors": ["https://v3yu20l6.mirror.aliyuncs.com","http://harbor:80"],

  "insecure-registries": ["harbor:5000","192.168.126.131:5000"]

}

未配置主机名映射地址报以下错误:

Get http://harbor:5000/v2/: dial tcp: lookup harbor on 10.0.2.3:53: read udp 10.0.2.15:49443->10.0.2.3:53: i/o timeout  

/etc/hosts配置harbor对应的ip

Caused by: com.spotify.docker.client.exceptions.DockerException: denied: requested access to the resource is denied

dockerfile-maven-plugin配置项configuration配置远程私有镜像仓库的username和password

打包(如果单个模块引入了docker插件,此命令也可构建镜像)mvn clean package

推送镜像mvn dockerfile:push

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

idea通过maven使用docker插件生成镜像并推送到harbor仓库 的相关文章

随机推荐

  • FreeRTOS任务相关基础知识

    一 单任务系统和多任务系统 单任务系统一般为裸机系统 xff0c while 1 做一个大循环 xff0c 也包含一些中断 xff0c 完成所有的程序逻辑处理 如果应用程序需求繁多 xff0c 程序设计复杂 xff0c 应考虑多任务系统 多
  • FreeRTOS任务切换——PendSV

    前言 xff1a 本文分析一下FreeRTOS任务切换相关内容 RTOS系统的核心是进行任务管理 xff0c 任务切换 本文分SVC和PendSV异常 任务切换场景 pendSV中断函数 FreeRTOS时间片调度4部分讲解FreeRTOS
  • ROS:OpenCV读取摄像头并发布话题

    ROS OpenCV读取本地照片发布到rviz中 ROS读取摄像头视频数据发布到rviz中 include lt ros ros h gt include lt image transport image transport h gt in
  • 一种动态更新flink任务配置的方法

    文章目录 1 原理2 例 xff0c 整数过滤2 1 并行度为12 2 并行度大于12 3 完整代码 参考链接 1 原理 参考Flink Spark 如何实现动态更新作业配置 xff0c 讲得比较详细 xff0c 这篇的文章的参考参考文献也
  • 一种Hudi on Flink动态同步元数据变化的方法

    文章目录 一 背景二 官方Schema Evolution例子三 Flink 43 Hudi实现Schema Evolution四 96 HoodieFlinkStreamer 96 流程浅析及扩展方法4 1 FlinkKafkaConsu
  • 一种处理Hive元数据与文件类型不同时SQL查询失败的方法

    文章目录 一 背景二 分析过程2 1 环境及测试数据2 1 1 环境2 1 2 测试数据 2 2 select语句异常分析2 2 1 异常分析2 2 2 捕获异常位置 2 3 insert overwrite语句异常分析2 3 1 异常分析
  • 一种处理Hive元数据与文件类型不同时SQL查询失败的方法(二)

    文章目录 一 异常触发SQL二 异常处理三 Hive on Spark依赖的Hive jar包部署 继上一篇之后 xff0c 又发现了一种新的报错位置 本篇对这种情况进行处理 xff0c 并验证这种处理方式是否适用于Hive on Spar
  • PX4代码CMakeLists.txt的简单解读

    分析一下PX4代码CMakeLists txt文件 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 6
  • Hive分区表修改(增删)列

    文章目录 一 环境及测试数据二 删除列2 1 测试表test22 2 DDL删除列 xff1f 2 3 代码连接Hive Metastore删除列2 3 1 同时更新表与分区元数据 三 添加列结论参考链接 一 环境及测试数据 环境 xff1
  • python通过kerberos连接impala操作hive

    一 python2版本 1 docker基础镜像 tobyhferguson impyla tester 2 安装相关包及配置 2 1 安装包 参考python3 6 5基于kerberos认证的hive和hdfs连接调用 yum span
  • 程序员成长路线

    回顾过去 xff0c 我们会清晰地看见走过来的路线 xff0c 但面向未来我们又该如何走下去 xff1f 但凡过往 xff0c 皆为序章 xff0c 过去不可变 xff0c 未来才是希望 xff0c 而如何去规划并管理好未来的成长进化之路
  • 消息队列、信号量、事件组、任务通知之间的区别

    消息队列 信号量 事件组 任务通知之间的区别 消息队列 xff08 需要传递消息时使用 xff09 在任务与任务间 中断和任务间传递信息 xff0c 可以数据传输 事件标志组 xff08 多个事件同步 xff0c 不需要传递消息时使用 xf
  • 包含癞子的麻将胡牌算法

    记录一下麻将的通用胡牌算法实现 xff0c 只要满足M x ABC 43 N x DDD 43 EE 即可胡牌 在这里先分析一下最简单的胡牌思路 xff1a 先找出所有可能的将牌 xff0c 若除去两张将牌之外的所有牌都能成扑 xff0c
  • 麻将胡牌算法

    用数字代替麻将中的所有牌 xff1a 一万 九万 1 9 一筒 九筒 11 19 一条 九条 21 29 东 南 西 北 中 发 白 31 37 胡牌的种类 xff1a 对对胡 十三幺和33332 判断胡牌的过程 xff08 以下所说的规则
  • 麻将胡牌万能公式:

    基本胡牌类型 M AAA 43 N ABC 43 DD xff08 AAA 是三个刻字 xff0c ABC 是顺子 xff0c DD 是将牌 xff09 麻将总共14张 xff0c m和n系数 xff0c AAA代表一样的三个 xff0c
  • 麻将

    来自百度百科https baike baidu com item E9 BA BB E5 B0 86 215 fr 61 aladdin 一副完整的麻将牌共152张 包括字牌 花牌 序数牌 百搭牌 流行的是精简版麻将 xff0c 不含百搭和
  • 使用etcdctl 获取 kubernetes etcd内容

    kubernetes排错过程中可能需要连接到etcd库核对数据 通过etcdctl命令可以连接到库 xff0c 查看etcd库中的key value 创建一个etcdctl的别名 证书的位置可以通过查看kubelet 运行参数获取到 etc
  • Jenkins 部署jar包到服务器并启动后的乱码问题

    在java命令中加 参数 Dfile encoding 61 UTF 8 export LANG 61 zh CN UTF 8 是为了解决应用输出的日志中有乱码的问题 export LANG 61 zh CN UTF 8 nohup jav
  • VS CODE 页面没暂存/提交就放弃更改了怎么还原

    如图所示 xff0c 不小心手滑将还没有暂存的页面点了放弃更改 xff0c 过了两天才发现搞错了 xff0c 这时候怎么办呢 xff1f 不用担心 xff0c 找到这个页面 xff0c 直接ctrl 43 z可以还原回来 亲测有效
  • idea通过maven使用docker插件生成镜像并推送到harbor仓库

    windows有2种方式获取docker环境 xff0c 使用VM构建linux环境并安装docker xff0c 另一种是安装dockertoolbox xff0c 再通过bash的方式创建虚拟的docker环境 xff08 本文使用后者