Docker Jar项目启动慢

问题描述

jar包项目,启动后外面不能访问,要过很长时间才可以访问,日志也没有报错。

开始了 漫长的 填坑之路。

lsof -i:端口(方向不对)

 

第一张图带ipv4是创建容器指定了端口,并且没有配置 --network host参数

第二张图不带ipv4是创建容器配置 --network=host 没有指定端口(这种方式不能指定端口)

结果还是没有解决问题,一直以为是因为使用 --network=host 方式没有ipv4绑定呢,这里走了很多弯路,没有解决,但是为什么没有ipv4也不知道为什么。

下面说一说我对docker network的理解,安装好docker后自动创建下面三种。

 1、bridge:桥接网络 默认情况下启动的Docker容器,都是使用 bridge,Docker安装时创建的桥接网络,每次Docker容器重启时,会按照顺序获取对应的IP地址,这个就导致重启下,Docker的IP地址就变了

2、none:无指定网络 使用 --network=none,docker 容器就不会分配局域网的IP。

3、host: 主机网络 使用 --network=host,此时,Docker 容器的网络会附属在主机上,两者是互通的。 例如,在容器中运行一个Web服务,监听8080端口,则主机的8080端口就会自动映射到容器中。这时配置 -p 端口参数是无效的

注:--network=host 和 --net=hos 好像是一样的,说下我的简单理解,如果所有docker 容器都在一台机器上,使用bridge或host都可以,如果是分布在不面的物理机上,必须选择host,如果不指定host那么两台物理机上的容器不能相互访问。

docker exec 不能进入容器

 出现这样的问题是由于镜像系统不一,使用错误shell解释器导致,可尝试以下其中一种方案。

docker exec -it container-test /bin/bash

docker exec -it container-test /bin/sh

docker exec -it container-test /bin/csh

正确的解决方法

 方法一:

进入容器的 JAVA安装目录    /jre/lib/security/

vi java.security  修改这个文件

找到 securerandom.source=file:/dev/random  修改为  securerandom.source=file:/dev/./urandom

然后重启容器,发现就正常了

方法二:

 -Djava.security.egd=file:/dev/./urandom   加入JVM的这个启动参数

 也是可以的,这个主要是使用tomcat 随机数引起的,用jetty或undertow在不配置此参数时不知道会不会有这种情况,也不知道为什么会存在这么大的一个问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值