㈠ 生產環境,測試環境中,Docker 可以做什麼
生產環境,測試環境中,Docker 可以做什麼
Docker 是容器管理工具
Docker是一個輕量級、攜帶型、與外界隔離的容器,也是一個可以在容器中很方便地構建、傳輸、運行應用的引擎。和傳統的虛擬化技術不同的是,Docker
引擎並不虛擬出一台虛擬機,而是直接使用宿主機的內核和硬體,直接在宿主機上運行容器內應用。也正是得益於此,Docker
容器內運行的應用和宿主機上運行的應用性能差距幾乎可以忽略不計。
但是 Docker 本身並不是一個容器系統,而是一個基於原有的容器化工具 LXC 用來創建虛擬環境的工具。類似 LXC 的工具已經在生產環境中使用多年,Docker 則基於此提供了更加友好的鏡像管理工具和部署工具。
Docker 不是虛擬化引擎
Docker 第一次發布的時候,很多人都拿 Docker 和虛擬機 VMware、KVM 和 VirtualBox
比滾前較。盡管從功能上看,Docker 和虛擬化技術致力於解決的問題都差不多,但是 Docker
卻是採取了另一種非常不同的方式。虛擬機是虛擬出一套硬體,虛擬機的系統進行的磁碟察備裂操作,其實都是在對虛擬出來的磁碟進行操作。當運行 CPU
密集型的任務時,是虛擬機把虛擬系統里的 CPU
指令「翻譯」成宿主機的CPU指令並進行執行。兩個磁碟層,兩個處理器調度器,兩個操作系統消耗的內存,所有虛擬出的這些都會帶來相當多的性能損失,一台虛擬機所消耗的硬體資源和對應的硬體相當,一台主機上跑太多的虛擬機之後就會過載。而
Docker 就沒有這種顧慮。Docker 運行應用採取的是「容器」的解決方案:使用 namespace 和 CGroup
進行資源限制,和宿主機共享內核,不虛擬磁碟,所有的容器磁碟操作其實都是對 /var/lib/docker/
的操作。簡言之,Docker 其實只是在宿主機中運行了一個受到限制的應用程序。
從上面不難看出,容器和虛擬機的概念並不相同,容器也並不能取代虛擬機。在容器力所不能及的地方,虛擬機可以大顯身手。例如:宿主機是
Linux,只能通過虛擬機運行 Windows,Docker 便無法做到。再例如,宿主機是 Windows,Windows 並不能直接運行
Docker,Windows上的 Docker 其實是運行在 VirtualBox 虛擬機里的。
Docker 使用層級的文件系統
前面提到過,Docker 和現有容器技術 LXC 等相比,優勢之一就是 Docker 提供了鏡像管理。對於 Docker
而言,鏡像是一個靜態的、只讀的容器文件系統的快照。然而不僅如此,Docker
中所有的磁碟操作都是對特定的Copy-On-Write文件系統進行的。下面通過一個例子解釋一下這個問題。
例如我們要建立一個容器運行 JAVA Web 應用,那麼我們應該使用一個已經安裝了 JAVA 的鏡像。在
Dockerfile(一個用於生成鏡像的指令文件)中,應該指明「基於 JAVA 鏡像」,這樣 Docker 就會去 Docker Hub
Registry 上下載提前構建好的 JAVA 鏡像。然後再 Dockerfile 中指明下載並解壓 Apache Tomcat 軟體到 /opt/tomcat
文件夾中。這條命令並不會對原有的 JAVA 鏡像產生任何影響,而僅僅是在原有鏡像上面添加了一個改動層。當一個容器啟動時,容器內的所有改動層都會啟動,容器會從第一層中運行 /usr/bin/java
命令,並且調用另外一層中的 /opt/tomcat/bin
命令。實際上,Dockerfile 中每一條指令都會產生一個新的改動層敗閉,即便只有一個文件被改動。如果用過 Git
就能更清楚地認識這一點,每條指令就像是每次 mit,都會留下記錄。但是對於 Docker
來說,這種文件系統提供了更大的靈活性,也可以更方便地管理應用程序。
我們Spantree的團隊有一個自己維護的含有 Tomcat 的鏡像。發布新版本也非常簡單:使用 Dockerfile
將新版本拷貝進鏡像從而創建一個新鏡像,然後給新鏡像貼上版本的標簽。不同版本的鏡像的不同之處僅僅是一個 90 MB 大小的 WAR
文件,他們所基於的主鏡像都是相同的。如果使用虛擬機去維護這些不同的版本的話,還要消耗掉很多不同的磁碟去存儲相同的系統,而使用 Docker
就只需要很小的磁碟空間。即便我們同時運行這個鏡像的很多實例,我們也只需要一個基礎的 JAVA / TOMCAT 鏡像。
Docker 可以節約時間
很多年前我在為一個連鎖餐廳開發軟體時,僅僅是為了描述如何搭建環境都需要寫一個 12 頁的 Word 文檔。例如本地 Oracle
資料庫,特定版本的
JAVA,以及其他七七八八的系統工具和共享庫、軟體包。整個搭建過程浪費掉了我們團隊每個人幾乎一天的時間,如果用金錢衡量的話,花掉了我們上萬美金的時間成本。雖然客戶已經對這種事情習以為常,甚至認為這是引入新成員、讓成員適應環境、讓自己的員工適應我們的軟體所必須的成本,但是相比較起來,我們寧願把更多的時間花在為客戶構建可以增進業務的功能上面。
如果當時有 Docker,那麼構建環境就會像使用自動化搭建工具 Puppet / Chef / Salt / Ansible
一樣簡單,我們也可以把整個搭建時間周期從一天縮短為幾分鍾。但是和這些工具不同的地方在於,Docker
可以不僅僅可以搭建整個環境,還可以將整個環境保存成磁碟文件,然後復制到別的地方。需要從源碼編譯 Node.js 嗎?Docker
做得到。Docker 不僅僅可以構建一個 Node.js 環境,還可以將整個環境做成鏡像,然後保存到任何地方。當然,由於 Docker
是一個容器,所以不用擔心容器內執行的東西會對宿主機產生任何的影響。
現在新加入我們團隊的人只需要運行 docker-pose up
命令,便可以喝杯咖啡,然後開始工作了。
Docker 可以節省開銷
當然,時間就是金錢。除了時間外,Docker 還可以節省在基礎設施硬體上的開銷。高德納和麥肯錫的研究表明,數據中心的利用率在 6% -
12% 左右。不僅如此,如果採用虛擬機的話,你還需要被動地監控和設置每台虛擬機的 CPU 硬碟和內存的使用率,因為採用了靜態分區(static
partitioning)所以資源並不能完全被利用。。而容器可以解決這個問題:容器可以在實例之間進行內存和磁碟共享。你可以在同一台主機上運行多個服務、可以不用去限制容器所消耗的資源、可以去限制資源、可以在不需要的時候停止容器,也不用擔心啟動已經停止的程序時會帶來過多的資源消耗。凌晨三點的時候只有很少的人會去訪問你的網站,同時你需要比較多的資源執行夜間的批處理任務,那麼可以很簡單的便實現資源的交換。
虛擬機所消耗的內存、硬碟、CPU 都是固定的,一般動態調整都需要重啟虛擬機。而用 Docker 的話,你可以進行資源限制,得益於
CGroup,可以很方便動態調整資源限制,讓然也可以不進行資源限制。Docker
容器內的應用對宿主機而言只是兩個隔離的應用程序,並不是兩個虛擬機,所以宿主機也可以自行去分配資源。
Docker 有一個健壯的鏡像託管系統
前面提到過,這個託管系統就叫做 Docker Hub Registry。截止到 2015年4月29日,互聯網上大約有 14000
個公共的 Docker,而大部分都被託管在 Docker Hub 上面。和 Github 已經很大程度上成為開源項目的代表一樣,Docker
官方的 Docker Hub 則已經是公共 Docker 鏡像的代表。這些鏡像可以作為你應用和數據服務的基礎。
也正是得益於此,你可以隨意嘗試最新的技術:說不定有些人就把圖形化資料庫的實例打包成了 Docker 鏡像託管在上面。再例如
Gitlab,手工搭建 Gitlab 非常困難,譯者不建議普通用戶去手工搭建,而如果使用 Docker
Gitlab,這個鏡像則會五秒內便搭建完成。再例如特定 Ruby 版本的 Rails 應用,再例如 Linux 上的 .NET
應用,這些都可以使用簡單的一條 Docker 命令搭建完成。
Docker 官方鏡像都有 official 標簽,安全性可以保證。但是第三方鏡像的安全性無法保證,所以請謹慎下載第三方鏡像。生產環境下可以只使用第三方提供的 Dockerfile 構建鏡像。
Docker Github 介紹:5 秒內搞定一個 Gitlab
關於 Linux 上的 .NET 應用和 Rails 應用,將會在以後的文章中做詳細介紹。
Docker 可以避免產生 Bug
Spantree 一直是「固定基礎設置」(immutable
infrastructure)的狂熱愛好者。換句話說,除非有心臟出血這種漏洞,我們盡量不對系統做升級,也盡量不去改變系統的設置。當添加新伺服器的時候,我們也會從頭構建伺服器的系統,然後直接將鏡像導入,將伺服器放入負載均衡的集群里,然後對要退休的伺服器進行健康檢查,檢查完畢後移除集群。得益於
Docker 鏡像可以很輕松的導入導出,我們可以最大程度地減少因為環境和版本問題導致的不兼容,即便有不兼容了也可以很輕松地回滾。當然,有了
Docker,我們在生產、測試和開發中的運行環境得到統一。以前在協同開發時,會因為每個人開發的電腦配置不同而導致「在我的電腦上是能運行的,你的怎麼不行」的情況,而如今
Docker 已經幫我們解決了這個問題。
Docker 目前只能運行在 Linux 上
前面也提到過,Docker 使用的是經過長時間生產環境檢驗的技術,雖然這些技術已經都出現很長時間了,但是大部分技術都還是 Linux
獨有的,例如 LXC 和 Cgroup。也就是說,截止到現在,Docker 容器內只能在 Linux 上運行 Linux
上的服務和應用。Microsoft 正在和 Docker 緊密合作,並且已經宣布了下一個版本的 Windows Server 將會支持
Docker 容器,並且命名為 Windows Docker,估計採用的技術應該是Hyper-V
Container,我們有望在未來的幾年內看到這個版本。
Docker是一個為開發人員和系統管理員開發、遷移和運行應用程序的平台。應用程序通過Docker打包成DockerImage後,可以實現統一的方式來下載、啟動、擴展、刪除和遷移,這樣方便了應用程序的部署和運維。本文將介紹如何在不同操作系統平台上部署Docker環境的方法。信息Ubuntu:Docker剛推出的時候只支持Ubuntu,後來才一點點開始對其他平台的支持。所以在Ubuntu平台上部署Docker平台還是挺簡單的。官方目前支持的版本有UbuntuTrusty14.04(LTS)、UbuntuPrecise12.04(LTS)、UbuntuSaucy13.10。Docker要求64位的系統且內核版本至少為3.10(如果是Ubuntu12.04LTS,則要求內核版本至少是3.13)。可以使用uname–r命令來確認當前系統的內核版本:$uname-r3.11.0-15-generic可以使用以下命令來升級內核:$sudoapt-getupdate$sudoapt-getinstalllinux-image-generic-lts-trusty$sudoreboot之後就可以安裝Docker了:$wget-qO-/boot2docker/osx-installer/releases/latest獲得。安裝完成後,Boot2Docker位於Applications文件夾。註:Boot2Docker目前只是作為開發工具發布,請不要將其應用在生產環境中。創建Boot2Docker虛擬機:$boot2dockerinit$boot2dockerstart$boot2dockershellinit顯示或設置Docker客戶端環境變數$boot2dockershellinit$eval"$(boot2dockershellinit)"最後驗證安裝是否成功:$dockerrunhello-worldWindows:Windows與MACOS相同,也需要安裝Boot2Docker工具。安裝文件可以在/boot2docker/windows-installer/releases/latest獲得。Windows版的Boot2Docker在啟動時會自動確認環境變數,因此可以直接驗證安裝是否成功:$dockerrunhello-world。
測試環境和生產環境能互相轉換么
大家做etl任務分測試環境和生產環境嗎,各個環境之間怎麼切換呢?
一般分 開發,測試,uat,生產環境。切換的話先導出資源庫,在導入即可。
怎樣利用鏡像將生產環境復制到測試環境
通常企業不會直接導數據,而是復制整個生產環境作為測試環境,這樣可以保證測試環境的配置和正式系統的一樣。
目前測試環境規劃時,通常有三套:聯調測試環境、功能測試環境、准發布環境。
為了更接近用戶的真實環境,比如可能會用一些真實的數據來測試軟體,這時重點覆蓋的用例應當是重要的業務流程,用戶最常用的功能,本次新加的功能,對公司利益影響最大的功能等等
運行環境和測試環境
運行環境就是 機子支持軟體的條件 比如說有些老游戲不能在windows環境下運行,只能在DOS下運行,就是說該游戲運行環境是DOS
同樣測試環境就是能夠支持軟體進行測試的條件
開發環境跟測試環境於個人來說,通常是一樣的。應為通常你就用同一部電腦。
具體說 我開發一個網站
開發環境:windows
tomcat
jdk
·
·
·
docker swarm 有在生產環境中用的企業嗎
Docker Swarm 是官方發布的集群容器管理工具。它的特點是:比較輕量級,無縫支持標準的docker API。 深入淺出Swarm 一文很清晰地講解了它的架構和命令。本文從零開始搭建並管理一個swarm集群。
准備工作
我們需要先安裝 virtualBox 和 vagrant 。通過vagrant來驅動virtualBox搭建一個虛擬測試環境。首先在本地任意路徑新建一個空文件夾比如 test ,運行以下命令:
virtual box host
mkdir test
cd test
vagrant init minimum/ubuntu-trusty64-docker
vi Vagrantfile
裡面應該有一句 config.vm.box = "minimum/ubuntu-trusty64-docker" ,在它的下面添加如下幾行代碼,相當於給它分配三台虛擬機,一台叫做 manager ,它的IP是 192.168.33.17 ;另兩台叫做 node1 和 node2 ,它們的IP是 192.168.33.18 和192.168.33.19 。
Vagrantfile
config.vm.define "manager" do | host |
host.vm.hostname = "manager"
host.vm.neork "private_neork", ip: "192.168.33.17"
end
config.vm.define "node1" do | host |
host.vm.hostname = "node1"
host.vm.neork "private_neork", ip: "192.168.33.18"
end
config.vm.define "node2" do | host |
host.vm.hostname = "node2"
host.vm.neork "private_neork", ip: "192.168.33.19"
end
這個vagrant鏡像已經在ubuntu的基礎上幫我們安裝了docker,用起來很方便。然後分別在三個終端運行以下命令啟動並連接三台虛擬機。
virtual box host terminal 1
vagrant up
vagrant ssh manager
virtual box host terminal 2
vagrant ssh node1
virtual box host terminal 3
vagrant ssh node2
搭建環境
想要讓swarm管理node,首先得讓docker daemon支持TCP。在三台虛擬機上運行以下命令:
manager and node1 and node2
sudo sh -c 'echo DOCKER_OPTS="-H tcp:0.0.0.0:2375 -H unix:/var/run/docker.sock" >> /etc/default/docker'
sudo rm /etc/docker/key.json # 免得我們用vagrant生成的docker id都一樣,刪掉了重啟docker服務會自動生成一個新的
sudo service docker restart
學環境監測這專業可以做什麼?
首先,是可以進 *** 的環境監測站做環境監測工作,其次可以進環境治理公司當技術員(可以是環境監測,也可以其他工作),還可以進儀器公司當儀器設計、儀器檢驗、儀器應用、儀器售後、儀器咨詢、儀器銷售,可以進化工廠當化驗員等等。
搭建windinws測試環境和linux測試環境有什麼區別
沒明白你想做什麼,如果是應用程序測試環境,那安裝linux系統,部署應用就行了,如果是測試資料庫,就安裝資料庫軟體
㈡ 在一個javaweb項目中。docker與maven與tomcat有什麼關系 最最簡單的介紹就好。
Docker 是一個開源的應用容器引擎,讓陸雹開發者可以打包java web項目到一個可移植的容器中,然後發布到任何流行的 Linux 機器上,也可以實高纖現虛擬化。
maven是一個項目構建工具,可以對javaweb項目進行管理、編譯、打包、部署。
tomcat是個java web程序的早念帆伺服器容器,可以用戶部署javaweb應用
㈢ 推薦如何系統的學習JAVA
如何系統學習java體系
學java首先要學 J2SE,它是java體系的基礎,也是重中之重。很多人往往不重視基礎,其實這是捨本逐末的做法。說這么多就是希望大家能重視基礎,能在這條路上走的更遠。
學j2se有下面幾個目標:
1、你要能真正理解面向對象的優勢,理解為什麼不是面向過程。
2、掌握java語法基礎。包括異常處理、多線程、網路編程、GUI編程等
3、如果你對swing不感興趣,可以跳過它。
這一階段結束後,你需要能獨立寫一個小游戲,比如坦克大戰、俄羅斯方塊、貪吃蛇等。
當你完成J2SE的學習之後,你就要開始學習java web了。
你需要掌握web基礎知識:html、css、javascript、ajax、jQuery。
別怕,這些技術看起來很多,其實也沒要你精通它們,只是要你能在用到它們的時候,能通過快速查閱相關文檔,能正確使用它們。如果這一階段順利的話,你可能還用不到一個月。
學習servlet、jsp、jdbc。
這些是javaweb的基礎,如果你自學有難度,可以在網上下載一些相關視頻,幫助理解,降低學習難度曲線。
當你完成上一階段的學習後,你就可以進入J2EE的階段了。
這一階段,你可能會見到很多各種各樣的框架,會讓你眼花繚亂,頭暈目眩。不過別擔心,你只需要學習三個就足夠了。它們是struts2、hibernate、spring。這些框架為搭建具有可伸縮性、靈活性、易維護性的商務系統提供了良好的機制。
首先你需要學習三個框架的基本配置和使用,直到你能熟練搭建一個ssh項目。
如果學有餘力,你可以深入學習這些框架的設計模式。
學習完三大框架之後,其實你學的已經足夠多了。如果對移動應用的開發感興趣,你可以接著學習安卓開發。安卓開發不需要其他知識,只要你j2se學的不錯,學安卓開發對你就沒太大難度了。
㈣ Java都需要那些技術
Java工程師需要學習的技術還是比較多的。
尤其是現在技術更新迭代比較快,需要不斷學習掌握新的技術,給自身鍍金才能在IT行業發展的較好。
下面列舉出來一些需要掌握的技術:
1、理解Java面向對象思想
2、掌握開發中常用基礎API
3、熟練使用集合框架、IO流、異常
4、能夠基於JDK8開發
5、掌握流行關系型數據Mysql常見操作
6、熟練增刪改查數據處理
7、掌握Java JDBC、連接池操作
8、掌握基本的JavaWeb基礎知識JSP/Servlet/Vue等
9、具備基本的B/S結構軟體開發能力
10、可以動手開發一個B/S架構的Web項目
11、掌握SSM框架技術
12、掌握使用Maven進行模塊的開發
13、熟悉基本的Linux命令以及Linux伺服器的使用
14、掌握高級緩存技術Redis的原理,並熟練使用
15、掌握Git、Nginx、Docker、Elasticsearch、SpringBoot、SpringCloud、RabbitMQ、分布式事務、JVM、JUC、Zookeeper、Dubbo、Nacos等技術
16、企業級開發項目
雖然需要學習掌握的技術比較多,但是堅信「只要功夫深鐵杵磨成針」,加油!
㈤ 零基礎學java應該從哪裡開始
新手小白學習java應該分為四個階段:第一階段要學習Java 基礎和Web 開發基礎,必須掌握Java 基本面向對象知識、JDBC 與 MySQL 基礎、Java 常用集合的使用、 Servlet 編寫服務端程序、HTML/CSS/JavaScript 前端基礎技術等等,能實現簡單小程序的運行;千鋒教育就有線上免費Java線上公開課。【更系統全面的學習資料,點擊查看】 第二階段要掌握Java 高級基礎,可以深入理解 Java 面向對象相關知識點。 第三階段要掌握Linux、Docker、Vue、SpringBoot、Shiro、分布式事務的使用等,可以熟練使用Docker 完成項目部署;第四階段掌握JUC、Zookeeper、Dubbo、MySQL 高級、MyCat和微信小程序以及微信支付的開發等內容。如果想了解Java更多相關知識,建議到千鋒教育了解一下。千鋒教育目前在18個城市擁有22個校區,年培養優質人才20000餘人,與國內20000餘家企業建立人才輸送合作關系,院校合作超600所。 【千鋒IT培訓機構,熱門IT課程試聽名額限時領取】
㈥ 大家知道java程序員學習路線嗎
java所需要的學習的知識點很多,可以大致分為以下幾個階段:
一、預科學習:
HTML5:HTML5標簽入門、HTML5表格、表單
CSS3:CSS3選擇器和簡單屬性、CSS3定位和布局、CSS3復雜選擇器和高級屬性
資料庫:mysql資料庫安裝和數據操作、約束和簡單查詢、復雜查詢、資料庫設計、oracle的安裝與數據操作、oracle與mysql的對比學習
二、JavaSE
Java語言基礎、程序邏輯:環境配置和第一個語言程序-HelloWorld 變數運算符 條件和循環 方法和數組
Java面向對象:面向對象入門、面向對象應用_管理系統類
Java常用類、String相關、演算法相關 面向對象深入(重載、this、static )繼承(重寫、super、初始化順序)
多態(抽象類和介面、final、克隆和比較介面 設計模式、對象和類的生命周期)
API:異常、日誌 集合 集合工具類和泛型 IO JDBC基礎線程 網路編程 反射 NIO Junit
Java面向對象思想:設計模式 面向對象原則
Java底層理論:集合底層 性能監控工具 反編 JUC
三、Java web
web基礎:TOMCAT/WEB程序結構/HTTP協議、Servlet基礎入門、servlet作用域(cookie、session、ServletContext)、
Cookie和Session 、Servlet的交互/JSP原理及運用、 JavaBean/EL/JSTL/MVC思想
、JSP+Servlet+JDBC綜合練習、Session購物車案例/驗證碼/防止表單重復提交、監聽器過濾器等
第三方工具包:連接池、事務、分頁、文件上傳下載、Dom4j/Log4j/Log back
JavaScript和jQuery框架技術:JS入門和DOM基礎 、DOM模型深入 、jQ基礎、 jQ操作
MVC動態Web開發技術:自定義MVC框架、DAO框架、前端框架(layUI)
Web開發高級運用:tomcat server伺服器配置 、nginx使用、 jetty配置
網路編程:網路原理、HTTP協議基礎、Linux操作系統、雲服務搭建
四、SSM框架
Spring框架、SpringMVC框架、MyBatis框架:mybatis入門、配置文件詳解和動態sql的使用、
mybatis管理關系映射和延遲載入、 查詢緩存和逆向工程 、Spring入門和集成、myBatis SpringMVC入門 、SSM集成、
Spring配置詳解 、Spring AOP、 Spring事務配置 、SpringMVC高級功能 、SpringMVC原理
五、前沿技術
高可用、高並發、高擴展:Spring Boot 、緩存 、分布式 、全文索引、 服務中間件、 myCat、 雲服務 、人臉識別 、語言識別 、JVM底層+優化
在java的學習中,最重要的表示實踐,任何一個大牛都是敲出來的,光有理論知識,沒有實際動手能力也是不行的。
對java有興趣的小夥伴們,不妨先從java入門開始!B站上有很多的java教學視頻,從基礎到高級的都有,還挺不錯的,知識點講的很細致,還有完整版的學習路線圖。也可以自己去看看,下載學習試試。
㈦ Java開發的學習內容都有哪些
java學習內容你可以參考以下:
一、JavaEE基礎
Java基礎語法、面向對象、核心類庫、集合、異常、IO、線程、JDK新特性;
二、JavaWeb開發
前端技術、資料庫、JAVA資料庫操作、軟體伺服器及伺服器相關技術、動態網頁JSP、AJAX;
三、Java高級框架
SpringMVC、MyBatis、Spring、MySQL高級、Linux&Redis&Nginx、Maven;
四、大型微服務分布式項目實戰
SpringBoot、SpringCloud、Git、Dubbo、Zookeeper、AngularJS、Spring Security、BCrypt加密、FastDFS、分布式事務處理、Redis Cluster、Solr、SolrCloud、Freemarker、JMS、簡訊發送平台、SSO解決方案、CORS、Twitter的Snowflake、SpringTask、Maven Profile、MongoDB簡介、MyCat、Docker、Jenkins;
五、微服務大型項目實戰
㈧ jdk升級17docker如何部署
關注
在將java應用部署到docker環境的過程中,一個支持運行java程序的鏡像是必不可少的。由於oracle授權方面的問題,docker hub 上一般只有基於openjdk的鏡像,而且open jdk的鏡像不支持字體管理,在使用一些驗證碼功能時會報錯,比如生成驗證碼功能等。
而且openjdk 的鏡像過於龐大,openjdk:17-slim的鏡像大小就有407M。基於這些原因,我們可以選擇定製一個java運行環境鏡像。
jre製作激昌
由於jdk的體積比較大,我們選擇jre來作為運行環境,jdk1.8及以前的版本,都是有jre的,但是jdk9以後的版本脊液不在提供jre需要自己製作。
jlink是通過按模塊打包的,但是由於目前很多庫還不是按模塊打包的,所以我們無法知道項目裡面都用了那些模塊。只好將所有的模塊進行打包。這樣避免以後出現缺失模塊導致應用報錯的問題。
下面是windows平台的打包命令
bin\jlink.exe --mole-path jmods --add-moles ALL-MODULE-PATH --compress=2 --strip-debug --output jre
1
1
linux下,需要將要打包的java配置到系統環境變數中,不然生成不了明野扒,會報jlink not find錯誤
bin/jlink --mole-path jmods --add-moles ALL-MODULE-PATH --compress=2 --strip-debug --output jre17
1
1
–strip-debug 不打包調式信息 --compress=2 開啟2級別壓縮,這兩項減小生成的文件體積
–add-moles ALL-MODULE-PATH表示所有模塊
鏡像製作
基於alpine鏡像
拉取alpine鏡像
docker pull alpine
1
1
alpine鏡像非常小,只有5.59MB,可以通過docker run -it {iamgeId} sh 運行容器,運行一些簡單的命令試試
D:\repo\docker\java>docker run -it c059bfaa849c sh
/ # ls
bin dev etc home lib media mnt opt proc root run sbin srv sys tmp usr var
1
2
3
1
2
3
編寫dockerfile
FROM alpine:latest
MAINTAINER lin
#更換aline源
RUN echo "http://mirrors.aliyun.com/alpine/latest-stable/community" > /etc/apk/repositories
RUN echo "http://mirrors.aliyun.com/alpine/latest-stable/main" >> /etc/apk/repositories
#update apk
RUN apk update && apk upgrade
RUN apk --no-cache add ca-certificates
# bash vim wget curl net-tools
RUN apk add bash bash-doc bash-completion
RUN apk add vim wget curl net-tools
RUN rm -rf /var/cache/apk/*
RUN /bin/bash
#setup glibc
RUN wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.32-r0/glibc-2.32-r0.apk
RUN wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.32-r0/glibc-bin-2.32-r0.apk
RUN wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.32-r0/glibc-i18n-2.32-r0.apk
RUN wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.32-r0/glibc-dev-2.32-r0.apk
RUN wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub
RUN apk add glibc-2.32-r0.apk
RUN apk add glibc-bin-2.32-r0.apk
RUN apk add glibc-dev-2.32-r0.apk
RUN apk add glibc-i18n-2.32-r0.apk
RUN rm -rf *.apk
#setup date
RUN apk add tzdata
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#setup language 解決中文亂碼
RUN /usr/glibc-compat/bin/localedef -i en_US -f UTF-8 en_US.UTF-8
ENV LANG=en_US.UTF-8
# jdk-8u251-linux-x64.tar.gz
ADD jdk-8u251-linux-x64.tar.gz /usr/local
#setup java env
ENV JAVA_HOME=/usr/local/jdk1.8.0_251
ENV PATH=$PATH:.:$JAVA_HOME/bin
ENV CALSSPATH=$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
構建鏡像
docker build -t jdk17-orcle-alpine .
1
1
總結:由於alpine缺少很多東西,比如glibc,需要安裝後才能運行jvm,所以暫時放棄這條路
自己安裝glibc比較麻煩,可以使用已經安裝好glibc的鏡像
#FROM alpine:latest
FROM frolvlad/alpine-glibc
MAINTAINER lin
COPY ./jre17 /usr/local/jre17
#setup java env
ENV JAVA_HOME=/usr/local/jre17
ENV PATH=$PATH:$JAVA_HOME/bin
ENV CALSSPATH=$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
該方法構建的鏡像體積是比較小,但是啟動java應用(基於spring boot)的時候jvm會崩潰,原因不明
基於ubuntu
ubuntu鏡像相對來說也不是很大,才70多M
FROM ubuntu:latest
MAINTAINER lin
#更新軟體源
RUN apt-get update
#安裝字體支持
RUN apt-get install fontconfig -y
#清理緩存
RUN apt-get clean
#在windows環境下構建,將/usr/share/zoneinfo/Asia/Shanghai拷貝到本地目錄
COPY ./Shanghai /etc/localtime
#setup language 解決中文亂碼
#設置中文支持
ENV LANG C.UTF-8
#解壓jdk並刪除lib目錄下的源碼
COPY ./jre17 /usr/local/jre17
#授執行許可權
RUN chmod -R 750 /usr/local/jre17/bin
#setup java env
ENV JAVA_HOME=/usr/local/jre17
ENV PATH=$PATH:$JAVA_HOME/bin
ENV CALSSPATH=$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
構建
docker build -t mydockerhub:5000/jdk17-orcle-ubuntu:jre-17 .
1
1
總結:除了需要處理語言問題外,其他都比較順利,而且結果鏡像211MB,比官方提供的小了很多,暫時就這樣吧,以後有時間再折騰
打開CSDN,閱讀體驗更佳
最新發布 Docker部署SpringBoot項目(超詳細)
Docker部署SpringBoot項目(超詳細)
繼續訪問
JDK17抽取JRE並製作docker鏡像
jre docker
繼續訪問
docker 搭建 Oracle JDK(版本可更換) 鏡像
首先在本機創建jdk目錄 mkdir -p /root/jdk 下載jdk到/root/jdk目錄下 (版本隨意)也可以直接使用 rpm 下載,各憑本事(!>.<!) 這里我下載的版本是jdk-8u211-linux-x64.tar.gz 在/root/jdk目錄下創建Dockerfile文件 vim Dockerfile 內容為 # 基礎鏡像為 ce...
繼續訪問
Linux 安裝 jdk8-17、運行 jar
前提是先把網路ip配置好https://www.eclipse.org/downloads/packages/官網下載地址: jdk各個版本下載 jdk各個版本檔案A:網上隨便獸獸道首;file–connect—hostName(linux的ip)—user name(系統用戶)—prot(埠:默認)–authentication(選擇password)—點擊connect後----輸入密碼選中點擊滑鼠右鍵—Upload-----> 刪除 3.Ubuntu卸載jdk 4、在Linux解壓文件 三、
繼續訪問
免密登錄容器dockerfile ,docker部署openjdk-17 免密登錄容器dockerfile
免密登錄容器dockerfile
繼續訪問
筆記:Docker創建最小JDK運行環境
JDK1.8 Docker最小鏡像
繼續訪問
jre-7u17-windows-x64.exe
JDK是一個開發環境,用於構建應用程序,applet程序,和使用Java編程語言的組成部分。 Java Development Kit(JDK)是Sun Microsystems針對Java開發員的產品。自從Java推出以來,JDK已經成為使用最廣泛的Java SDK。JDK 是整個Java的核心,包括了Java運行環境,Java工具和Java基礎的類庫。JDK是學好Java的第一步。而專門運行在x86平台的Jrocket在服務端運行效率也要比Sun JDK好很多。從SUN的JDK5.0開始,提供了泛型等非常實用的功能,其版本也不斷更新,運行效率得到了非常大的提高。 定於2月19日發布的Java SE原來的重要補丁更新 - 2013年2月,但甲骨文決定加快釋放該重要補丁更新,因為積極開發「野生」的Java漏洞影響在桌面瀏覽器,運行時環境(JRE)與該重要補丁更新解決。 更新日誌:JDK 7u17 發布,該版本修復了瀏覽器插件的嚴重的安全漏洞:CVE-2013-1493,Oracle 強烈建議使用 Java 瀏覽器插件用戶升級。 重要補丁更新是針對多個安全漏洞的補丁集合。為Java SE重要補丁更新還包括非安全修復程序。重要補丁更新是累積性的,每個公告只描述自上一個重要補丁更新和安全警報添加的安全修復。因此,以前的重要補丁更新和安全警報建議應檢討有關以前累積的安全修復程序。 請參考: 重要補丁更新和安全警報的信息,有關Oracle安全性公告。 由於一個成功的攻擊所帶來的威脅,Oracle強烈建議用戶盡快應用CPU修復程序。該重要補丁更新包含50個新安全修復程序的Java SE的產品。 支持受影響的產品 該重要補丁更新解決的安全漏洞影響以下按類別列出的產品。請點擊可用補丁列或可用補丁表中的鏈接來訪問這些補丁的文檔。
Java17 安裝教程與環境配置(完整版)
Java17 安裝教程與環境配置(完整版)掉坑經歷安裝步驟環境配置 掉坑經歷 今天做項目的時候,發現新項目用的的spring-boot-starter-parent是最新的,一開始我使用2.5.7一直爆紅,當時想著降低版本就能使用了,然後被告知,jdk需要最新版本的,才能運行項目。於是乎,開始找教程,但是我看了好幾篇教程,都沒正確找到最新jdk下載,這里拿個https://www.oracle.com/java/technologies/downloads/#java17別人博文給的鏈接,結果你發現,你打開
繼續訪問
jre17 面向對象+集合的練習
簡單的初學者綜合練習
繼續訪問
使用docker容器運行java程序
使用docker容器運行java程序 java 18 一、文件准備 mkdir 11 cd 11 創建並進入目錄 docker pull ubuntu:22.04 wget https://download.oracle.com/java/18/latest/jdk-18_linux-x64_bin.tar.gz #sudo vim dockerfile內容如下 From ubuntu:22.04 Maintainer webrx "[email protected]" #把java添加到容器中 Add jdk-1
繼續訪問
docker安裝JDK
docker安裝jdk有很多種方式,這里使用自己構建鏡像的方式。 1.下載jdk安裝包 安裝包下載可以自己去官網下載,如果閑速度慢可以找一些網路資源; 安裝包下載好後,上傳到/usr/local/docker/jdk下,這個文件目錄需要自己創建 2.創建Dockerfile 在/usr/local/docker/jdk文件夾下創建Dockerfile,Dockerfile內容如下: FROM centos:centos7 MAINTAINER tao # 新建目錄 RUN mkdir /usr
繼續訪問
jre.17_32位
jre.17_32位,適用於JAVA空間,安裝在windows操作系統中!
jdk8、jdk11、jdk17版本下載
jdk8、jdk11、jdk17版本是長時間支持的版本
Java17(291)之後 , 禁用了TLS1.1 , 使JDBC無法用SSL連接SqlServer怎麼辦,以下是解決辦法
修改java.security文件 1.找到jre的java.security文件 2.打開java.security並搜索 「jdk.tls.disabledAlgorithms=」 3.刪掉TLSv1, TLSv1.1, 4.保存,可以了 修改後的樣例,jre17可直接復制 修改java.security文件 1.找到jre的java.security文件 如果是jre , 在 {JAVA_HOME} / jre / lib / security中, 比如👇 C:\Java\jdk-17.0.3.1\c
繼續訪問
docker構建jdk基礎鏡像,部署程序
docker構建jdk基礎鏡像
繼續訪問
Docker工具的使用
初識 Docker jdk的版本問題,環境造成的問題很常見,稱為代碼的水土不服 把環境和代碼一起傳過去 軟體跨環境遷移的問題就解決了 Docker 是一個開源的應用容器引擎 誕生於 2013 年初,基於 Go 語言實現, dotCloud 公司出品(後改名為Docker Inc) Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然後發布到任何流行的 Linux 機器上。 容器是完全使用沙箱機制,相互隔離 容器性能開銷極低。 Docker 從 1.
繼續訪問
熱門推薦 jdk、jre各版本下載
jdk、jre各版本下載 JDK安裝包中是包含JRE的。兩者都可以單獨下載安裝。 安裝包的下載官網:http://www.oracle.com/technetwork/java/javase/downloads/index.html 當前最新版本出到了Java SE 10.0.1;官網上JRE分為JRE和ServerJRE。 JRE、ServerJRE 選擇的區別如下圖: 即JRE是...
繼續訪問
java17+javaFX17+openCV4.5.5 實現遠程桌面功能 最全完整版
使用java17+javaFX17+openCV4.5.5+springboot開發的遠程桌面客戶端和服務端 99%通過JAVA實現,優化了CPU佔用、內存佔用、網路佔用 新手小白也可以根據文章玩得轉
繼續訪問
docker安裝jdk並運行若依後端jar包
為了以後吹牛逼, 採用jdk8+centos鏡像 =>jdk鏡像 吧jar包扔進持久化文件里 1 下載centos 下載指定centos鏡像 docker pull centos:centos7 最新的版本docker pull centos 兩百兆的系統 不可思議 2 下載jdk 就是下個linux版jdk8 傳到伺服器/home/docker/jdk # 路徑 cd /home/docker/jdk # 解壓 tar -zxvf jdk-8u291-linux-x64.tar.gz 編寫D
繼續訪問
JDK和JRE下載大全
JDK下載和環境變數配置
繼續訪問