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

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

  1. IDEA中使用Docker插件构建镜像并推送至私服Harbor

    IDEA中使用Docker插件构建镜像并推送至私服Harbor 一.开启Docker服务器的远程访问 1.1 开启2375远程访问 1.2 添加harbor镜像配置 1.3 重启docker服务 二. ...

  2. 1.2 SpringBoot构建Docker镜像并推送到Harbor

    1.修改pom 文件中 引入 dockerfile-maven-plugin 插件 1.1 properties 标签中增加如下: <!--项目名,需要和Harbor中的项目名称保持一致 --& ...

  3. [Docker]记一次使用jenkins将镜像文件推送到Harbor遇到的问题

    系统版本: Ubuntu 18.01 私服: Harbor Docker版本: Docker version 18.09.5 首先需要明确的是,即在harbor里项目设置为公开,但是在push的时候还 ...

  4. maven集成docker插件进行打包镜像并推送私服

    使用maven进行集成docker打包成镜像以及推送到docker私服 先水几句 我不会开场啊-默默无闻的送码人.不是吧不是吧.现在还有人用maven打包,然后手动上传jar.然后进行部署吗?你out ...

  5. docker eclipse打包_【Docker】Maven打包SpringBoot项目成Docker镜像并上传到Harbor仓库(Eclipse、STS、IDEA、Maven通用)...

    写在前面 最近,在研究如何使用Maven将SpringBoot项目打包成Docker镜像并发布到Harbor仓库,网上翻阅了很多博客和资料,发现大部分都是在复制粘贴别人的东西,没有经过实践的检验,根本 ...

  6. Maven打包SpringBoot项目镜像并推送至私有Harbor仓库

    1 准备工作: 1.1 搭建harbor 因为harbor是基于docker的,并且依赖于docker-compose,所以先要准备好dockers环境再安装好compose工具 1.1.1 dock ...

  7. Docker 安装、镜像、dockerfile、容器、仓库

    2018-05-30 参考: 1.<docker从入门到实战> 2.菜鸟教程http://www.runoob.com/docker/docker-command-manual.html. ...

  8. springboot学习(六十七) springboot项目通过gradle-docker-plugin插件构建为doker镜像并推送至镜像私服

    文章目录 前言 1.使用gradle部署springboot项目 2.Docker开启远程访问 3.安装镜像私服Harbor 4.gradle中配置插件 前言 springboot从2.4默认提供了打 ...

  9. 5.docker从指定(私有)仓库拉取镜像、推送镜像

    1.推送镜像到私有仓库 1.1修改配置daemon.json 由于我用的mac系统,直接在docker客户端配置私有仓库地址即可.配置完之后记得重启docker. 1.2 给镜像打标签 举例将从官方仓 ...

最新文章

  1. JAVA中文注解驱动,解决api接口返回的json里面出现中文乱码的问题
  2. 解决启动springboot项目时localhost一直显示Whitelabel Error Page和@ConfigurationProperties标红
  3. 云服务器配置出现的问题 2
  4. 验证码广告:站长增加收入新渠道
  5. php显示时间,php实现用已经过去多长时间的方式显示时间
  6. (ECC)椭圆曲线加密算法原理和C++实现源码
  7. 编译运行linux0.12,linux0.12 编译过程
  8. Spring Boot文档阅读笔记-exception handling–@ExceptionHandler解析与实例
  9. 帝国cms模板嵌入php,帝国cms模板中php调用信息的例子
  10. 超 10000 名开发者在追的技术栏目,你绝不能错过!
  11. softmax回归的简洁实现-09-p5
  12. MATLAB对光路进行模拟,MATLAB辅助OptiSystem实现光学反馈环路的模拟
  13. Codesys电子凸轮功能的设计与可视化仿真
  14. Latex中IEEEtran中参考文献中斜体问题
  15. python制作查询网页_Python制作简单的网页爬虫
  16. 微信小程序 - tab分页实现
  17. 视觉工程师笔试知识汇总
  18. 如何制定一个好计划?运用SMART原则
  19. AVI文件格式解析+AVI文件解析工具
  20. 腾讯云函数 python_腾讯云函数添加依赖方法之官方方案

热门文章

  1. excel文件下载下来损坏 js_java – React excel文件下载损坏
  2. CSS遮罩父元素透明,子元素不透明
  3. ubuntu进程管理方法(转)
  4. 通过冥想解除困意,提升精神
  5. PHP hypot,hypot - [ C语言中文开发手册 ] - 在线原生手册 - php中文网
  6. 【jquery】jquery $.fn $.fx是什么意思
  7. 龙架构(LoongArch)赋能众享链网,相关产品已完成适配
  8. go语言基础(四):继承、方法
  9. alert 弹出框的操作
  10. matlab gnuplot,Gnuplot 64位版(gnuplot颜色渲染)V5.2.3 安装版