docker 如何运行多个Springboot ?

第一个:端口映射
第二个:指定内存大小
第三个:读取、写入物理文件
第四个:日志文件
第五个:多个容器内部网络访问
第六个:遇到的问题

第一个:端口映射

Nginx使用的是转发,那么这个是最简单的。

[hn@iZbp1gp1t778obaz5m8vk8Z guides]$ docker run -d -p 8093:8093 guides-collect 将物理的端口映射为虚拟的端口即可,这个很简单

第二个:指定内存大小

-m,--memory                  内存限制,格式是数字加单位,单位可以为 b,k,m,g。最小为 4M--memory-swap                内存+交换分区大小总限制。格式同上。必须比-m设置的大--memory-reservation         内存的软性限制。格式同上--oom-kill-disable           是否阻止 OOM killer 杀死容器,默认没设置--oom-score-adj              容器被 OOM killer 杀死的优先级,范围是[-1000, 1000],默认为 0--memory-swappiness          用于设置容器的虚拟内存控制行为。值为 0~100 之间的整数--kernel-memory              核心内存限制。格式同上,最小为 4M
样例: [hn@iZbp1gp1t778obaz5m8vk8Z guides]$ docker run -d -m 1G --memory-swap 4G -p 8093:8093 guides-collect

第三个:读取物理文件、写入物理文件

上面两个情况启动时就加载,但是运行时需要不断读取本地文件该怎么办嘞 ?

[hn-docker@iZbp1gp1t778obaz5m8vk8Z ~]$ docker run -d -m 1G --memory-swap 4G -p 8092:8092 -v /home/hn-docker/docker/wechat:/springboot/wechat guides-message message容器的启动相当于是先从把镜像内的文件地址,映射到物理机器上的地址;如镜像地址:/springboot/wechat物理地址:/home/hn-docker/docker/wechat

Bind mounts

Bind mounts模式和Volumes非常相似,不同点在于Bind mounts模式是将宿主机上的任意文件或文件夹挂载到容器,而Volumes本质上是将Docker服务管理的一块区域(默认是/var/lib/docker/volumes下的文件夹)挂载到容器。

Bind mounts的使用和Volumes类似,也是通过-v或--mount参数将宿主机文件挂载容器中。下面是一个例子:

使用--mount参数时,需要指定type=bind:

$ docker run -d  --name=nginxtest  --mount type=bind,source=/usr/local/web,destination=/usr/share/nginx/html  nginx:latest

上面的例子将宿主机上的/usr/local/web文件夹挂载到容器中的/usr/share/nginx/html文件夹。

或者使用-v参数:

$ docker run -d  --name=nginxtest  -v /usr/local/web:/usr/share/nginx/html  nginx:latest

第四个:日志文件

第一步:先获取运行容器的ID:da3199e9d032         [hn@iZbp1gp1t778obaz5m8vk8Z guides]$ docker psCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMESda3199e9d032        guides-collect      "java -Djava.secur..."   2 hours ago         Up 2 hours          0.0.0.0:8093->8093/tcp   sharp_mirzakhani 第二步:查询运行日志 - 搞定[hn@iZbp1gp1t778obaz5m8vk8Z guides]$ docker logs -f 51c384b8afee

参考信息:

命令格式:

$ docker logs [OPTIONS] CONTAINER  Options:        --details        显示更多的信息    -f, --follow         跟踪实时日志        --since string   显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟)        --tail string    从日志末尾显示多少行日志, 默认是all    -t, --timestamps     显示时间戳        --until string   显示自某个timestamp之前的日志,或相对时间,如42m(即42分钟)

例子:

查看指定时间后的日志,只显示最后100行:

$ docker logs -f -t --since="2018-02-08" --tail=100 CONTAINER_ID

查看最近30分钟的日志:

$ docker logs --since 30m CONTAINER_ID

查看某时间之后的日志:

$ docker logs -t --since="2018-02-08T13:23:37" CONTAINER_ID

查看某时间段日志:

$ docker logs -t --since="2018-02-08T13:23:37" --until "2018-02-09T12:23:37" CONTAINER_ID

第五个:宿主机与容器网络交互

问题描述:当你docker内运行的springboot想访问宿主机的Redis、获取其他容器的MySQL时,朋友你是否傻眼了

解决方案:需要查询到宿主机容器的软连接ip,使用内网ip访问就ok了 docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' xxxid   (容器id) 例如:[yn@iZbp1gp1t778obaz5m8vk8Z logs]$ docker ps -aCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMESabe77b60254a        assistant            "java -Djava.secur..."   6 minutes ago       Up 6 minutes        0.0.0.0:9304->8091/tcp   nostalgic_albattani37c6dd777636        collect              "java -Djava.secur..."   30 hours ago        Up 30 hours         0.0.0.0:8093->8093/tcp   silly_poincare4dcb9fcae281        message              "java -Djava.secur..."   3 days ago          Up 3 days           0.0.0.0:8092->8092/tcp   reverent_galileo 比如要查:abe77b60254a 这个容器的网络地址[yn@iZbp1gp1t778obaz5m8vk8Z logs]$ docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' abe77b60254a172.17.0.4 这个时候:abe77b60254a 这个容器的IP地址就是:172.17.0.4想访问就走内网地址 172.17.0.4 即可同时也可得知宿主机的IP就应该是 172.17.0.1

第六个:你会遇到的坑

一:镜像启动失败,然后怎么看日志

启动失败后,需要知道是哪个镜像的ID、然后用日志去查:docker logs -f 镜像id

例如:[yn@iZbp1gp1t778obaz5m8vk8Z logs]$ docker ps -aCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMESabe77b60254a        assistant            "java -Djava.secur..."   6 minutes ago       Up 6 minutes        0.0.0.0:9304->8091/tcp   nostalgic_albattani37c6dd777636        collect              "java -Djava.secur..."   30 hours ago        Up 30 hours         0.0.0.0:8093->8093/tcp   silly_poincare4dcb9fcae281        message              "java -Djava.secur..."   3 days ago          Up 3 days           0.0.0.0:8092->8092/tcp   reverent_galileo 查这个容器日志最新的10行[yn@iZbp1gp1t778obaz5m8vk8Z ~]$ docker logs -f -t --tail 10 abe77b60254a   

二:日志时间或者数据存储至数据库比实际时间小8个小时

RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone

作者:悟能的师兄

原文链接:https://blog.csdn.net/yexiaomodemo/article/details/110263394

springboot设置运行内存_Docker 如何运行多个 Springboot?相关推荐

  1. springboot设置运行内存_docker run容器 设置 jvm 运行springboot 程序

    首先dockerfile中需要设置一个变量 比如我Dockerfile内容 FROM openjdk:8-jre-alpine VOLUME/tmp ADD *.jar app.jar ENV TZ= ...

  2. springboot设置运行内存_spring boot应用优化,6s内启动,内存减半

    前言 taptap-developer是一个spring boot框架驱动的纯Grpc服务,所以,只用了四步,移除了web和spring cloud相关的模块后,启动速度就稳稳的保持在了6s内.除了启 ...

  3. springboot设置静态资源不拦截的方法

    springboot设置静态资源不拦截的方法 springboot不拦截静态资源需配置如下的类: import org.springframework.context.annotation.Confi ...

  4. 为什么SpringBoot的jar可以直接运行

    本文来说下为什么SpringBoot的 jar 可以直接运行 文章目录 概述 Spring Boot Loader抽象的一些类 JarLauncher的执行过程 自定义的类加载器LaunchedURL ...

  5. springboot项目在cmd窗口运行后台卡顿问题

    springboot项目在cmd窗口运行后台卡顿问题 1.背景介绍 2.问题描述 3.问题追踪 4.线程快照分析 5.解决办法 1.背景介绍 项目使用Springboot开发,项目打成jar后,部署在 ...

  6. springboot设置拦截器的方法

    springboot设置拦截器的方式: 1.编写一个类,在类上面加上@Configuration注解,然后继承 WebMvcConfigurerAdapter. 重写父类的方法:addIntercep ...

  7. python每天定时9点执行_win10设置Python程序定时运行(设置计划任务)

    楼主最近写了一个简单的Python程序,想让这个小程序每天上午8点定时运行一次,因为我的电脑是Windows系统,无法使用Linux下强大的crontab命令,所以我只好求助于度娘.我搜到了好几个相关 ...

  8. SpringBoot项目在idea中运行正常,打包jar包后运行报NoClassDefFoundError和UnsatisfiedDependencyException解决方案...

    SpringBoot项目在idea中运行正常,按照网上的方式打成jar包后在控制台运行报错. 第一个错误: 2018-09-06 09:38:35,222 ERROR (SpringApplicati ...

  9. [html] 移动端如何设置页面以全屏模式运行?

    [html] 移动端如何设置页面以全屏模式运行? <meta name="apple-mobile-web-app-capable" content="yes&qu ...

最新文章

  1. 语言生日创意代码_你生日那天的宇宙什么样子知道?我全部给你吧!
  2. redis——新版复制
  3. mybatis连接oracle12乱码,使用mybatis链接oracle数据库出现账号密码错误解决
  4. html flex 的高度,html – 使flexbox行成为最短子元素的高度?
  5. vmware中按Ctrl+Alt+Del的困扰
  6. 菜鸟的学习之路(9) — ArrayList类
  7. 功能测试用例不好写?来自阿里大佬的设计方法分享
  8. php-mysql rpm_Linux下的mysql apache php rpm安装方法步骤(转载并补充细节)
  9. 黑马程序员视频-微信小程序-原生框架——项目搭建
  10. 深入了解现代 Web 浏览器(第 4 部分)【合成器线程详解】
  11. excel中删除重复数据
  12. 微信公众号页面如何跳转至关注公众号页面
  13. MySQL添加约束条件
  14. 【POI1999】【BZOJ2936】降 水
  15. 转:15条优化电脑系统开机速度方法
  16. 可以把对方卡掉线的代码_2015最新卡死安卓QQ代码 卡到让对方手机QQ无响应及代码分享...
  17. React canvas 抽奖转盘
  18. 选一些200页左右的书,每周看一本
  19. 有序序列插入c语言,已有一个排好序的序列,输入一个数插入到该序列中,使其仍然保持有序....
  20. 详解 0xff 的意义及作用

热门文章

  1. php 调用 com,PHP调用COM函数
  2. 模板vs定制 门店小程序该如何选择?
  3. 对图片进行压缩,水印,伸缩变换,透明处理,格式转换操作
  4. 17.3.12---urlparse模块的URL下载
  5. java----IO和NIO的区别
  6. C/C++二维数组名和二级指针的联系与区别
  7. 在一个公司10年,会怎么样?
  8. 一位嵌入式工程师的成长之路
  9. 解决一个驱动代码解耦合问题
  10. 你应该知道为什么需要内核