Docker 运行多个Springboot的详细教程(Docker 运行多个Springboot的详细教程)
Docker 运行多个Springboot的详细教程
Docker 运行多个Springboot的详细教程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
具体内容请参考:Docker数据存储之Bind mounts详解
第四个:日志文件
第一步:先获取运行容器的ID:da3199e9d032 [hn@iZbp1gp1t778obaz5m8vk8Z guides]$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES da3199e9d032 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 -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES abe77b60254a assistant "java -Djava.secur..." 6 minutes ago Up 6 minutes 0.0.0.0:9304->8091/tcp nostalgic_albattani 37c6dd777636 collect "java -Djava.secur..." 30 hours ago Up 30 hours 0.0.0.0:8093->8093/tcp silly_poincare 4dcb9fcae281 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}}' abe77b60254a 172.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 -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES abe77b60254a assistant "java -Djava.secur..." 6 minutes ago Up 6 minutes 0.0.0.0:9304->8091/tcp nostalgic_albattani 37c6dd777636 collect "java -Djava.secur..." 30 hours ago Up 30 hours 0.0.0.0:8093->8093/tcp silly_poincare 4dcb9fcae281 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
到此这篇关于Docker 运行多个Springboot的详细教程的文章就介绍到这了,更多相关Docker 运行多个Springboot内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
- dockerhub镜像排行(DockerHub 镜像仓库的使用详解)
- docker容器启动后秒退(解决docker run 或者 docker restart 启动镜像就自动退出)
- docker执行shell脚本(基于Docker搭建ELK 日志系统的方法)
- 查看docker容器进程运行状态命令(docker容器内要启动两个进程时Dockerfile的实现代码)
- docker分配容器资源(Mac为docker和kubectl添加自动补全命令的方法)
- docker安装详细教程linux(linux中docker的安装教程)
- docker显示容器的gc日志(解决docker使用GDB,无法进入断点的问题)
- docker 查看目录映射(docker 文件存放路径, 修改端口映射操作方式)
- docker 加入k8s吗(k8s和Docker关系简单说明)
- docker给镜像加名称(Alpine Docker镜像字体的问题解决操作)
- docker怎样安装mysql8(docker-compose安装db2数据库操作)
- docker是k8s 编排必备容器工具(Docker部署ELK7.3.0日志收集服务最佳实践)
- centos7.6 安装docker(Centos7安装Docker2020最新亲测可用,直接复制粘贴即可)
- docker进入容器的方法(docker容器里面的root权限获取方法)
- mysql允许远程访问docker(Docker部署mysql远程连接 解决2003的问题)
- mongodb容器化部署映射端口访问(Docker 部署 MongoDB容器的方法)
- 得这个 难治病 的人太多了,300个人赶到杭州商量怎么办(得这个难治病的人太多了)
- 经度,世界时间腕表的灵魂(世界时间腕表的灵魂)
- 阿里最新财报公布 三季度营收增长3 ,将增加150亿美元回购额度 在美股价小涨(阿里最新财报公布)
- 赵薇时胖时瘦 最近变美少女 原因在这里 躺着就变瘦(赵薇时胖时瘦最近变美)
- 学会这26种姿势,你就可以和兵哥哥切磋了(你就可以和兵哥哥切磋了)
- 吴彦祖陈冠希 恩怨 ,失去曾让他流泪的女友,终遇走过18年真爱(吴彦祖陈冠希恩怨)
热门推荐
- css3实现120度的箭头(使用css实现任意大小、任意方向和任意角度的箭头示例)
- canvas两种绘图方法(canvas 基础之图像处理的使用)
- 如何在vscode中运行linux(解决VScode配置远程调试Linux程序的问题)
- 织梦cms怎么设置页面(织梦CMS调用问答栏目文章到首页实现方法分享)
- C# 正则表达式
- 织梦网站栏目管理和内容发布(使用DEDE织梦计划任务功能定时更新首页)
- 阿里云ecs和轻量服务器(阿里云ECS服务器入门使用流程推荐)
- python操作json库(Python将json文件写入ES数据库的方法)
- python 获取天气预报(详解用python自制微信机器人,定时发送天气预报)
- dedecms 产品缩略图(织梦DedeCms v5.6/5.7 新图集页面增加图片下载功能)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9