部署在k8s或者docker中的java程序如何通过IDEA进行调试

一、暴露调试端口

代码在通过dockerfile进行镜像打包时需要在dockerfile中定义好要暴露的调试端口
在这里插入图片描述

EXPOSE 5005
ENTRYPOINT ["java","-jar","-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005","/demojenkins.jar"]

二、docker或者k8s中启动容器

1、docker

docker run -d -p 5005:5005 -p 8111:8111 java-demo-01:latest -t

在这里插入图片描述
注意: 如果通过docker命令在启动容器的时候没有在命令中暴露5005端口,只是dockerfile中定义暴露了5005端口,那么查看容器状态PORTS将会呈如下显示
在这里插入图片描述
这种只能说明对于Linux宿主机而言,容器的5005端口暴露出来了,Linux宿主机是能连上的,但是对于外部机器而言这个端口是无法访问的。所以在使用docker命令启动容器时一定要将5005端口暴露给外部机器

2、k8s

对于k8s而言则需要使用NodePort方式将5005端口暴露给外部机器

kubectl expose deployment javademo1 -n ceshi --name=debug --port=5005 --target-port=5005 --type=NodePort

也可以采用在kuboard图形化界面上修改容器信息,增加暴露端口
在这里插入图片描述
暴露后查看service会查到相应的NodePort形式的端口
在这里插入图片描述

三、远程调试

通过IDEA连接暴露出来的调试端口进行远程调试

1、配置远程调试

在这里插入图片描述
配置好之后,在代码上打上断点,切换到remote配置,点击debug按钮开始调试
在这里插入图片描述
出现“已连接到目标 VM, 地址: ‘‘10.10.10.41:31096’,传输: ‘套接字’’”字样,表示IDEA已经连接到远程JVM调试端口,可以触发代码进行调试了
当代码触发后,会停在打上断点的地方,可以进行逐步调试,查看变量等操作

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Kubernetes(简称为K8s)是一个开源的容器编排和管理工具,而Docker是一种流行的容器化技术。在将应用程序部署到生产环境时,通常会使用Kubernetes和Docker来实现应用程序的容器化部署Docker是一种轻量级的虚拟化技术,它可以将应用程序及其依赖项打包到一个独立的容器。每个容器都运行在相互隔离的环境,使得应用程序在不同的环境具备相同的行为。使用Docker可以简化应用程序部署和维护过程,提高应用程序的可移植性和可扩展性。 而Kubernetes则是用来管理和编排Docker容器的工具。它提供了一种强大的方式来自动化容器的部署、扩展和管理。使用Kubernetes,我们可以定义容器的运行状态、资源需求和依赖关系,由Kubernetes来负责分配和管理这些容器的部署。Kubernetes提供了许多有用的功能,如自动扩展、负载均衡和容器调度等,可以确保应用程序始终以高可用性和高性能的方式运行。 在使用Kubernetes部署应用程序时,我们首先需要将应用程序打包成一个Docker容器镜像。然后,将这个镜像上传到一个容器镜像仓库,可以是Docker Hub或者私有的镜像仓库。接下来,使用Kubernetes的命令或配置文件,定义容器的部署和管理规则,如需要的资源、运行方式和依赖关系等。最后,Kubernetes将根据这些规则自动部署和管理容器,确保应用程序按照我们期望的方式运行。 总结来说,Kubernetes和Docker是两个在容器化部署方面非常重要的工具。Docker提供了容器化技术,而Kubernetes则提供了一种强大的方式来自动化和管理这些容器的部署。通过使用Kubernetes和Docker,我们可以实现应用程序的高效、可移植和可扩展的部署。 ### 回答2: K8s(Kubernetes)和Docker都是用于应用程序部署和容器编排的工具,它们可以一起使用来实现高效的应用部署和管理。 Docker是一种开源的容器化平台,它将应用程序及其依赖关系打包到一个独立的容器,使其可以在不同的操作系统和环境运行。使用Docker部署应用程序时,可以将应用程序及其所有依赖项打包成一个镜像,在不同的环境轻松部署和迁移。这样做可以显著提高应用程序的可移植性和可伸缩性。 然而,当应用程序数量和规模增加时,仅仅使用Docker来管理容器变得困难。这时候可以引入K8s进行容器编排。K8s是一个用于自动化容器操作的开源平台,它可以自动化部署、扩展和管理应用程序的容器。K8s可以监视和管理多个Docker容器,确保它们始终按照所定义的规范和要求运行。 通过使用K8s,可以实现应用程序的高可用性、负载均衡和动态扩展。K8s允许自动调度容器,以满足应用程序的需求,并支持水平扩展和自动伸缩。此外,K8s还提供了强大的存储和网络管理功能,可以方便地进行持久化存储和跨容器通信。 总而言之,DockerK8s都是部署和管理容器化应用程序的重要工具。Docker提供了容器化平台,可以打包和运行应用程序,而K8s则提供了容器编排和管理功能,能够自动化和优化容器的运行。通过结合使用这两个工具,可以实现灵活、高效和可靠的应用程序部署和管理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值