您当前的位置:首页 > 电脑百科 > 程序开发 > 容器

Docker 如何运行多个 Springboot?

时间:2020-12-15 11:57:29  来源:  作者:

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

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 如何运行多个 Springboot?

 

第四个:日志文件

第一步:先获取运行容器的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?

 

作者:悟能的师兄

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



Tags:Docker   点击:()  评论:()
声明:本站部分内容来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除,谢谢。
▌相关评论
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
▌相关推荐
第一个:端口映射 第二个:指定内存大小 第三个:读取、写入物理文件 第四个:日志文件 第五个:多个容器内部网络访问 第六个:遇到的问题 第一个:端口映射Nginx使用的是转发,那么这个是...【详细内容】
2020-12-15   Docker  点击:(0)  评论:(0)  加入收藏
在本文,我将介绍几种不用 Docker 就可以构建容器的方法。我将以 OpenFaaS 作为参考案例,它的工作负载使用了 OCI 格式的容器镜像。OpenFaaS 是 Kubernetes 的一个 CaaS 平台,可...【详细内容】
2020-12-15   Docker  点击:(2)  评论:(0)  加入收藏
前言不知道这个小伙伴有多久没用过 Docker 了, 突然对我说 Docker 命令怎么发生变化了docker run ...#变成了docker container run ...他说,本来对 Docker 命令就不熟悉,这下感...【详细内容】
2020-12-09   Docker  点击:(4)  评论:(0)  加入收藏
写在前面镜像是Docker三大核心概念中最重要的一部分,而Docker运行容器前需要本地存在对应的镜像,如果镜像不存在,Docker会尝试从默认的镜像仓库中下载(默认使用Docker Hub公共注...【详细内容】
2020-11-30   Docker  点击:(3)  评论:(0)  加入收藏
1、 查找Docker容器中的RabbitMQ镜像docker ps -a[root@linux ~]# docker ps -aCONTAINER ID IMAGE COMMAND CREATED...【详细内容】
2020-11-27   Docker  点击:(8)  评论:(0)  加入收藏
1.搜索nacos镜像docker search nacos2.下载镜像docker pull nacos/nacos-server 3.查看本地镜像docker images 4.启动镜像nacos官方文档docker run -d -p 8848:8848 --env M...【详细内容】
2020-11-27   Docker  点击:(7)  评论:(0)  加入收藏
现在的项目部署运维中,使用Docker容器越来越多,Docker给我们提供创建容器的方式也有好几种,主要是docker run命令、Dockerfile文件、docker-compose三种方式,一个比一个方便。我...【详细内容】
2020-11-20   Docker  点击:(7)  评论:(0)  加入收藏
你是否还在大量控制台窗口中监控容器,还是对使用终端命令充满热情?而使用Docker的图形用户界面(GUI)工具,则可以更简单的对容器进行管理,并提高效率。而且它们都是免费的。Portain...【详细内容】
2020-11-16   Docker  点击:(6)  评论:(0)  加入收藏
Docker基本命令更新软件包yum -y update安装Docker虚拟机 yum install -y docker运行、重启、关闭Docker虚拟机service docker startservice docker stop搜索镜像 docker se...【详细内容】
2020-11-12   Docker  点击:(7)  评论:(0)  加入收藏
Jenkins是一款开源的CI&CD软件, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。JenkinsJenkins基于Java环境,可以部署在windows/Mac OS/linux上,通过其网页...【详细内容】
2020-11-06   Docker  点击:(13)  评论:(0)  加入收藏
通过本篇文章我们可以了解到容器镜像结构、将主机数据挂载到容器的方式、容器数据卷及数据卷的备份与恢复等技术,下面我们就一起来学习吧!01 Docker存储概览默认情况下容器中...【详细内容】
2020-10-29   Docker  点击:(5)  评论:(0)  加入收藏
本篇文章我们将讲解跨主机网络的容器通信实现,涉及到Docker overlay网络与MacVlan网络的解决方案,下面我们就一起来学习吧!01 Docker跨主机网络通信跨主机的容器网络方案主要有...【详细内容】
2020-10-26   Docker  点击:(7)  评论:(0)  加入收藏
简介Redis Cluster是Redis官方的一个高可用分布式解决方案,其优点是高可用,缺点是不能保证数据强一致。在这里使用docker容器来搭建一套6节点(3主,3从)Redis-Cluster集群环境。环...【详细内容】
2020-10-22   Docker  点击:(8)  评论:(0)  加入收藏
如果我们想要构建和运行一个现代的云基础设施,那么理解Docker和Kubernetes是必不可少的。本文主要给大家介绍Docker和Kubernetes技术以及它们之间的区别和联系。一、Docker1....【详细内容】
2020-10-19   Docker  点击:(4)  评论:(0)  加入收藏
今天这篇文章我们主要来了解一下容器的一些基本用法。01 Docker的安装Docker目前主要有两个版本,社区版(Community Edition(CE))与企业版(Enterprise Edition(EE)),本章节我们主要...【详细内容】
2020-10-15   Docker  点击:(7)  评论:(0)  加入收藏
以下文章来源于转角遇到GitHub ,作者欧盆索思当前 Docker 的火热程度毋庸置疑。我们都知晓 Docker 的镜像是基于层的概念构建的。如何让镜像更小,一直是大家关注的,网上也有很...【详细内容】
2020-09-28   Docker  点击:(9)  评论:(0)  加入收藏
可以说,Docker是目前市面上比较流行的容器技术之一。本节我们将带领大家一起使用Docker来演示如何构建、运行、发布微服务。 Docker的安装原先,Docker只支持Linux环境下的安装...【详细内容】
2020-09-25   Docker  点击:(9)  评论:(0)  加入收藏
当Dockerfile超出合理范围时,会出现以下问题: 很难理解和维护-我们需要阅读数百行以了解所有依赖关系 在这么多行之间可能忽略一个明显的安全问题 当每个人都在更改同一文件...【详细内容】
2020-09-23   Docker  点击:(4)  评论:(0)  加入收藏
Docker下的disconf实战全文链接 https://blog.csdn.net/boling_cavalry/article/details/71082610; https://blog.csdn.net/boling_cavalry/article/details/71107498; https:...【详细内容】
2020-09-22   Docker  点击:(11)  评论:(0)  加入收藏
docker网络我们来探讨一个docker的network的问题。小伙伴们请看如下命令:docker run -d -p8080:8080 镜像ID-p8080:8080这个命令的意思就是将容器的8080端口映射到宿主机的80...【详细内容】
2020-09-18   Docker  点击:(4)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条