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

  • 一、开启Docker服务器的远程访问
    • 1.1 开启2375远程访问
    • 1.2 添加harbor镜像配置
    • 1.3 重启docker服务
  • 二、通过IDEA操作Docker
    • 2.1 下载docker插件
    • 2.2 配置远程docker
    • 2.3 拉取镜像
    • 2.4 创建容器并运行
  • 三、IDEA-Maven打包镜像
    • 3.1 修改maven的配置文件settings.xml
    • 3.2 修改SpringBoot项目中的pom.xml
    • 3.3 docker-maven-plugin插件配置
      • 方式一:
      • 方式二:
    • 3.4 docker-maven-plugin操作容器

部分内容参考:
CSDN:

  • 最强菜鸟:菜鸟的IDEA使用Docker插件

一、开启Docker服务器的远程访问

1.1 开启2375远程访问

默认的dokcer是不支持远程访问的,需要加点配置,开启Docker的远程访问

# 首先查看docker配置文件所在位置
systemctl status docker# 会输出如下内容:
● docker.service - Docker Application Container EngineLoaded: loaded (/etc/systemd/system/docker.service; enabled; vendor preset: disabled)Active: active (running) since Thu 2020-12-17 14:22:23 CST; 18min agoDocs: http://docs.docker.comMain PID: 25113 (dockerd)

确定docker配置文件位置在:/etc/systemd/system/docker.service

然后编辑修改docker配置文件:

vi /lib/systemd/system/docker.service

找到包含ExecStart的这行,添加如下内容:

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock \

其中,2375端口为docker远程服务端口,包含了docker可视化工具portainer,以及远程上传镜像的功能。

1.2 添加harbor镜像配置

编辑docker的配置文件:

vi /etc/docker/daemon.json
# 添加harbor镜像地址
{"insecure-registries": ["192.168.0.20:81"]
}

1.3 重启docker服务

# 后台配置重新加载
systemctl daemon-reload
# 重启docker服务
systemctl restart docker.service
# 此处可能会出现docker无法启动情况,可能是由于docker.service配置文件修改错误,重新修改一次然后重新执行上述命令即可#查看配置的端口号(2375)是否开启(非必要)
netstat -nlpt

二、通过IDEA操作Docker

2.1 下载docker插件

使用idea的docker插件连接docker,idea默认已经下载过docker插件了,如果没有的话,需要在idea下载docker插件

2.2 配置远程docker

点击idea的设置选项(file --> setting -> docker),新建连接


连接成功之后就可以使用服务器(虚拟机)上的docker了

2.3 拉取镜像

idea可以通过可视化的方式拉取镜像,不用自己去敲命令



有时候会出现拉取的时间超时的情况,可以配置一下国内的镜像获取阿里云的加速器

2.4 创建容器并运行

创建并且运行docker容器


创建成功之后可以看到新创建的容器,也可以在服务器(虚拟机)上用docker命令查看

重启容器、停止容器和删除容器等操作

三、IDEA-Maven打包镜像

简书:尹楷楷:maven 插件docker-maven-plugin之推送镜像到harbor私有仓库(二)
CSDN:喝醉的咕咕鸟:docker–私服搭建和推送于Springboot项目打成镜像

将构建好的镜像通过docker-maven-plugin插件上传到harbor私服

3.1 修改maven的配置文件settings.xml

在maven的配置文件中,添加harbor私服的用户名及密码:

  <servers><server><id>dockerharbor</id><username>harbor</username><password>123456</password><configuration><email>123456@aliyun.com</email></configuration></server></servers>

3.2 修改SpringBoot项目中的pom.xml

添加属性配置,属性配置,在后面的插件配置里有引用这个:

  • docker.repostory 是docker私服地址,harbor配置完默认端口就是80,可以不带端口号。但是我将之改成81了
  • docker.registry.name 即是在harbor中配置的镜像仓库名,必须一致!这里我配的是test,因为harbor中配置的镜像仓库名也是test。

<properties><!--docker插件--><!-- docker私服地址,Harbor配置完默认地址就是80,默认不带端口号。但是我这里是81 --><docker.repostory>192.168.10.11:81</docker.repostory><!--项目名,需要和Harbor中的项目名称保持一致 --><docker.registry.name>test</docker.registry.name>
</properties>

3.3 docker-maven-plugin插件配置

  • serverId 指定之前在maven的settings.xml中配置的server节点,这样maven会去找其中配置的用户名密码和邮箱
  • registryUrl 指定上面配置的properties属性,即是harbor私服的访问url,注意我设置的使用81端口,默认是80端口
  • imageName 指定上传harbor私服的镜像名,必须和harbor上的url、镜像仓库名保持一致。其中的docker.registry.name就是上面配置的properties属性

方式一:

<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><plugin><groupId>com.spotify</groupId><artifactId>docker-maven-plugin</artifactId><version>1.0.0</version><executions><execution><id>build-image</id><!--用户只需执行mvn package ,就会自动执行mvn docker:build--><phase>package</phase><goals><goal>build</goal></goals></execution></executions><configuration><serverId>harbor</serverId><registryUrl>http://${docker.repostory}</registryUrl><!--Building image 192.168.0.20/demo1--><imageName>${docker.repostory}/${docker.registry.name}/${project.artifactId}:${project.version}</imageName><!--指定标签 这里指定的是镜像的版本,我们默认版本是latest--><!--<imageTags><imageTag>latest</imageTag></imageTags>--><!--指定基础镜像jdk1.8--><baseImage>jdk:1.8</baseImage><!-- 指定 Dockerfile 路径--><!--镜像制作人本人信息 --><!--<maintainer>1090239782@qq.com</maintainer>--><!--切换到工作目录--><workdir>/opt</workdir><!--${project.build.finalName}.jar是打包后生成的jar包的名字--><entryPoint>["java", "-jar","-Xms256m","-Xmx512m","/${project.build.finalName}.jar"]</entryPoint><!--必须配置dockerHost标签(除非配置系统环境变量DOCKER_HOST)--><dockerHost>http://192.168.0.20:2375</dockerHost><!-- jar包位置--><resources><resource><targetPath>/</targetPath><!-- target目录下--><directory>${project.build.directory}</directory><!--通过jar包名找到jar包--><include>${project.build.finalName}.jar</include></resource></resources></configuration></plugin></plugins></build>

接下来只要先点击clean清除之前的所有打包的文件,然后再点击package打包文件即可完成镜像的构建,真正的一键部署


到此镜像构建成功,接下来只要创建容器跑起来即可


通过ip访问

此种方式,直接通过Maven的package命令,即可实现镜像的制作,但是要推送镜像到harbor私服,还需执行docker:push,即:

点击push,将镜像推送到harbor私服中

方式二:

<plugin><groupId>com.spotify</groupId><artifactId>docker-maven-plugin</artifactId><version>1.0.0</version><configuration><serverId>my-hub</serverId><registryUrl>http://${docker.repostory}</registryUrl><!--必须配置dockerHost标签(除非配置系统环境变量DOCKER_HOST)--><dockerHost>http://192.168.10.11:2375</dockerHost><!--Building image 192.168.10.11/demo1--><imageName>${docker.repostory}/${docker.registry.name}/${project.artifactId}:${project.version}</imageName><!-- 指定 Dockerfile 路径--><dockerDirectory>${basedir}/</dockerDirectory><!-- jar包位置--><resources><resource><targetPath>/ROOT</targetPath><!-- target目录下--><directory>${project.build.directory}</directory><!--通过jar包名找到jar包--><include>${pack-name}</include></resource></resources></configuration>
</plugin>

那么Dockerfile文件中的jar包名相应需要修改:

FROM java:8
WORKDIR /ROOT
ADD /ROOT/demo1-2.jar /ROOT/
ENTRYPOINT ["java", "-jar", "demo1-2.jar"]

点击pakage打包,target 上生成了springboot工程的jar包

完了之后,点击docker bulid 构建工程镜像

然后点击push,将镜像推送到harbor私服中

3.4 docker-maven-plugin操作容器

此部分内容参考:

  • 掘金:MacroZheng:https://juejin.im/post/6868060821927723021

  • docker-maven-plugin不仅可以操作镜像,还可以操作容器,比如我们以前需要使用如下Docker命令来运行容器;

docker run -p 8080:8080 --name mall-tiny-fabric \
--link mysql:db \
-v /etc/localtime:/etc/localtime \
-v /mydata/app/mall-tiny-fabric/logs:/var/logs \
-d 192.168.3.101:5000/mall-tiny/mall-tiny-fabric:0.0.1-SNAPSHOT
  • 现在我们只需在插件中配置即可,在<image>节点下添加<run>节点可以定义容器启动的行为:
<!--定义容器启动行为-->
<run><!--设置容器名,可采用通配符--><containerNamePattern>${project.artifactId}</containerNamePattern><!--设置端口映射--><ports><port>8080:8080</port></ports><!--设置容器间连接--><links><link>mysql:db</link></links><!--设置容器和宿主机目录挂载--><volumes><bind><volume>/etc/localtime:/etc/localtime</volume><volume>/mydata/app/${project.artifactId}/logs:/var/logs</volume></bind></volumes>
</run>
  • 之后直接使用docker:start命令即可启动了;
mvn docker:start[root@linux-local mydata]# docker ps
CONTAINER ID        IMAGE                                                         COMMAND                  CREATED             STATUS              PORTS                                            NAMES
95ce77c0394b        192.168.3.101:5000/mall-tiny/mall-tiny-fabric:0.0.1-SNAPSHOT   "java -jar /mall-tin…"   32 seconds ago      Up 31 seconds       0.0.0.0:8080->8080/tcp                           mall-tiny-fabric
  • 停止容器使用docker:stop命令即可;
mvn docker:stop
  • 删除容器使用docker:remove命令,是不是很方便!
mvn docker:remove

IDEA中使用Docker插件构建镜像并推送至私服Harbor相关推荐

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

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

  2. 【Azure + Core】实现CI/CD(一)构建镜像并推送仓库

    (海上生明月,天涯共此时) 今天是农历八月十六,大家中秋节快乐! 放了三天假,和家人整理下屋子,打扫下卫生,闲着无聊就研究点儿新东西.最近一直再看DevOps相关的内容,自从开始学习Docker以来, ...

  3. Harbor镜像库搭建以及如何在idea上构建镜像并推送Harbor

    一:Harbor镜像仓库搭建 1.软件准备: Docker 版本:20.10.6 Docker-compose 版本:v.2.4.0 2.docker 安装 下载docker-ce源到linux: c ...

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

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

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

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

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

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

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

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

  8. idea中使用docker插件部署项目

    安装docker 如果你之前安装过 docker,请先删掉sudo yum remove docker docker-common docker-selinux docker-engine 安装一些依 ...

  9. 3.9 Docker最新入门教程-Docker入门-构建镜像最佳实践

    3.9 构建镜像最佳实践 安全扫描 构建镜像后,最好使用docker scan命令扫描它以查找安全漏洞.Docker 与Snyk合作提供漏洞扫描服务. 笔记 您必须登录到 Docker Hub 才能扫 ...

最新文章

  1. python中定义字符串_python中的字符串
  2. python---webRTC~vad静音检测-学习笔记
  3. 一步一步理解Paxos算法
  4. python获取重定向url_python中检测url重定向到的地址的例子
  5. mysql5.7免安版配置_mysql5.7免安装版配置
  6. 【OpenCV 例程200篇】04. 用 matplotlib 显示图像(plt.imshow)
  7. python中两个文件如何互相传参_argparse模块如何在jupyter notebook中用于传参?
  8. iOS通知的整理笔记
  9. mysql 变量类型_MySQL 变量类型
  10. PowerShell 远程连接与其它技巧
  11. 常用BUG管理工具系统
  12. 算法之 --- 背包01版+ 挖金矿问题
  13. Linux下gdb(插件pwndbg、pead、gef)安装及调试常用指令
  14. SpringBoot集成Elasticsearch7.4 实战(一)
  15. 一千度近视眼学计算机,【震惊了】你见过近视8百,1千,3千,5千度?你见过9000度吗?...
  16. Docker速成过程中遇到的八个问题
  17. 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛 E-回旋星空
  18. react 实现自定义拖拽hook
  19. python指定路径斜杠与反斜杠的问题
  20. Android之第三方框架使用汇总

热门文章

  1. 被奇安信青睐的火绒 究竟有着怎样的魔力?
  2. 【Cxinny】微信小程序笔记
  3. 贸易大时代:代理IP助力企业出海
  4. 计算机考研失败了还能找工作吗,考研失败了怎么办_考研失败还能找工作吗
  5. 推荐一款超快的Android模拟器
  6. Eclipse SWT 创建项目(一)
  7. Python实现对Bitly的USA.gov数据集的可视化
  8. 计算机与控制科学谁好,考研考哪个方向好呢?模式识别 控制理论控制工程 计算机应专业研究生 信号与信息处理的进...
  9. buntu22.04安装WPS中文版(一百一十八)
  10. xmind文件不见了处理方法