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在不配置此參數時不知道會不會有這種情況,也不知道為什么會存在這么大的一個問題。
總結
以上是生活随笔為你收集整理的Docker Jar项目启动慢的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: swift野梦抄袭 taylor_霉霉T
- 下一篇: Python进阶实战 1.0 :爬取豆瓣