当前位置: 首页 > news >正文

Docker使用之java项目工程的部署

同样本文的基础建立在已在目标服务器(以linux为示例)上安装了docker,安装教程请移步度娘

若容器存在请先停止,在删除,然后删除镜像重新编译

//停止容器
sudo docker stop datatransfer//删除容器
sudo docker rm datatransfer//删除镜像
sudo docker rmi hrtransfer

复制java项目工程文件jar包到 /apps/demo.jar
在 /apps/ 目录创建 Dockerfile文件,输入以下内容

FROM openjdk:8
#作者
MAINTAINER AriesVayne
#将 与Dockerfile文件同目录的demo.jar文件复制到镜像中(Linux操作系统的根目录)名称为 app.jar
ADD springboot_server-0.0.1-SNAPSHOT.jar app.jar
#让 运行镜像的容器 去监听9000端口
EXPOSE 8085
#同步docker的时区
#RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone
#镜像启动时运行 java -jar /app.jar命令
ENTRYPOINT ["java","-jar","/app.jar"]

docker自动更新脚本

新建updateDocker.sh写入以下内容

echo "welcome to use docker reBuild"
echo "停止容器"
sudo docker stop yilianserver_instanceecho "删除容器"
sudo docker rm yilianserver_instanceecho "删除镜像"
sudo docker rmi yilianserverecho "打包docker"
sudo docker build -t yilianserver .echo "运行docker"
sudo docker run -d -it --name yilianserver_instance -p 8085:8085 yilianserverecho "运行docker"
sudo docker start yilianserver_instance
打包docker
sudo docker build -t hrtransfer .运动docker并开启两个端口
sudo docker run -d -it --name datatransfer -p 9000:9000 -p 9001:9001 hrtransfer//运行docker
sudo docker start datatransfer//查看日志
docker logs datatransfer //实时查看docker容器日志docker logs -f -t --tail 行数 容器名查看docker文件
sudo docker exec -it datatransfer ls -l /容器里面拷文件到宿主机
sudo docker cp datatransfer:/logs /home/hadoop/Log宿主机拷文件到容器里面
docker cp /opt/test.js datatransfer:/usr/local/tomcat/webapps/test/js//显示容器使用的内存、cpu资源
docker stats //显示容器使用的系统资源
docker system df -v//修改docker时间//查看每个容器占用的磁盘空间呢
docker system df -v

修改Docker容器的时间和宿主时间一致

1、首先进入到容器中:
docker exec -it  datatransfer /bin/bash2、在容器中修改下/etc/localtime文件的名称,避免冲突。
cd /etc/ 
mv /etc/localtime /etc/localtime_bak
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
date

查看高能耗进程

精简镜像的doker先安装相关工具

yum install procps1.docker stats 命令查看服务资源占用情况 获取cpu异常的容器id 60a01eab867b
2.docker exec -it 60a01eab867b /bin/bash 命令进入容器
3.top 命令查看该容器线程占用最高的进程PID 1
4.ps -mp 1 -o THREAD,tid,time 命令获取到1这个进程下面所有线程,通过查看%CPU找到最耗费CPU的线程TID 24(或者使用命令 top -Hp 1)
5.printf ‘%x’ 24 命令转换成对应的16进制PID 5c7e(24为上一步中获取到的线程TID )
6.jstack 1 | grep 5c7e -A 30 命令查看异常信息 注意:1是一开始获取的进程PID,而5c7e则是这个进程下面最耗费CPU的线程TID
7.jstack 1(进程pid)>stack.dump 命令,将该消耗进程的线程相关信息导出到stack.dump文件中,打开这个文件查看每个线程的具体状态然后分析代码异常
http://www.lryc.cn/news/104828.html

相关文章:

  • 3ds Max如何进行合成的反射光泽通道渲染
  • 114、Spring AOP是如何实现的?它和AspectJ有什么区别?
  • 正则表达式速通
  • 数据可视化(5)热力图及箱型图
  • React 组件通信-全面解析
  • “深入理解Spring Boot:快速构建微服务架构的利器“
  • SpringBoot超级详解
  • 手机的python怎么运行文件,python在手机上怎么运行
  • RBAC三级树状菜单实现(从前端到后端)未完待续
  • 牛客网Verilog刷题——VL41
  • 大整数截取解决方法(java代码)
  • Spring Boot使用@Async实现异步调用:自定义线程池
  • GFS 分布式文件系统
  • PHP-mysql学习笔记
  • AI技术快讯:清华开源ChatGLM2双语对话语言模型
  • 网络基础知识
  • 【应用层】HTTPS协议详细介绍
  • 【Tensorboard+Pytorch】使用注意事项
  • 设计模式行为型——命令模式
  • 13-2_Qt 5.9 C++开发指南_线程同步_QMutex+QMutexLocker(目前较为常用)
  • 金融行业选择哪种SSL证书才安全可靠
  • 面试总结(三)
  • 青大数据结构【2016】
  • 聊聊拉长LLaMA的一些经验
  • 线程池的使用详解
  • 刷题笔记 day4
  • Python 2.x 中如何使用flask模块进行Web开发
  • spring websocket 调用受权限保护的方法失败
  • Vue.js2+Cesium 四、模型对比
  • Linux 之 Vi 编辑器