速递物流系网站建设与维护,珠海网站制作推广公司,网站建设风格要求,wordpress文章标题字体太大docker 如何运行多个Springboot #xff1f;第一个#xff1a;端口映射第二个#xff1a;指定内存大小第三个#xff1a;读取、写入物理文件第四个#xff1a;日志文件第五个#xff1a;多个容器内部网络访问第六个#xff1a;遇到的问题第一个#xff1a;端口映射Ngin…docker 如何运行多个Springboot 第一个端口映射第二个指定内存大小第三个读取、写入物理文件第四个日志文件第五个多个容器内部网络访问第六个遇到的问题第一个端口映射Nginx使用的是转发那么这个是最简单的。[hniZbp1gp1t778obaz5m8vk8Z 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样例 [hniZbp1gp1t778obaz5m8vk8Z guides]$ docker run -d -m 1G --memory-swap 4G -p 8093:8093 guides-collect第三个读取物理文件、写入物理文件上面两个情况启动时就加载但是运行时需要不断读取本地文件该怎么办嘞 [hn-dockeriZbp1gp1t778obaz5m8vk8Z ~]$ 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/wechatBind mountsBind mounts模式和Volumes非常相似不同点在于Bind mounts模式是将宿主机上的任意文件或文件夹挂载到容器而Volumes本质上是将Docker服务管理的一块区域(默认是/var/lib/docker/volumes下的文件夹)挂载到容器。Bind mounts的使用和Volumes类似也是通过-v或--mount参数将宿主机文件挂载容器中。下面是一个例子使用--mount参数时需要指定typebind$ docker run -d --namenginxtest --mount typebind,source/usr/local/web,destination/usr/share/nginx/html nginx:latest上面的例子将宿主机上的/usr/local/web文件夹挂载到容器中的/usr/share/nginx/html文件夹。或者使用-v参数$ docker run -d --namenginxtest -v /usr/local/web:/usr/share/nginx/html nginx:latest第四个日志文件第一步先获取运行容器的IDda3199e9d032 [hniZbp1gp1t778obaz5m8vk8Z 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 第二步查询运行日志 - 搞定[hniZbp1gp1t778obaz5m8vk8Z 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 --since2018-02-08 --tail100 CONTAINER_ID查看最近30分钟的日志:$ docker logs --since 30m CONTAINER_ID查看某时间之后的日志$ docker logs -t --since2018-02-08T13:23:37 CONTAINER_ID查看某时间段日志$ docker logs -t --since2018-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) 例如[yniZbp1gp1t778obaz5m8vk8Z 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 这个容器的网络地址[yniZbp1gp1t778obaz5m8vk8Z 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例如[yniZbp1gp1t778obaz5m8vk8Z 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行[yniZbp1gp1t778obaz5m8vk8Z ~]$ 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