使用Docker 安装jdk8
拿到新的服務(wù)器后,第一步就是先搞定環(huán)境了,這里是安裝docker環(huán)境后,開始安裝服務(wù)器的軟件。
安裝jdk8:
1. 拉取jdk鏡像
這里使用的是我原來打包的jdk鏡像,上傳到服務(wù)器的/usr/目錄下了
2. 導(dǎo)入鏡像
使用命令:docker load -i 鏡像絕對(duì)路徑
這里直接使用:docker load -i /usr/centos_jdk8.tar
可以看到,成功導(dǎo)入docker鏡像了。
接著改下jdk鏡像的名稱,也就是從新打個(gè)tag:
使用命令:docker tag <原鏡像IMAGE ID> <新鏡像名稱>:<tag>
運(yùn)行jdk鏡像:
docker run -i -t -v /usr/soft/java/:/mnt/software 鏡像名稱:版本 /bin/bash
這里將容器的jdk安裝路徑/jdk1.8.0_121/掛載到宿主機(jī)的/usr/soft/java/jdk1.8.0_121,這樣訪問宿主機(jī)的該文件夾,就可以看到j(luò)dk所需要的相關(guān)文件。
這里使用的是交互模式啟動(dòng)的鏡像,啟動(dòng)成功后直接進(jìn)入容器內(nèi)部。
可以看到鏡像運(yùn)行成功了,并且自動(dòng)進(jìn)入容器內(nèi)部了。可對(duì)比命令行root@后面的主機(jī)名稱,已經(jīng)改變了。
剛開始試了下這樣運(yùn)行鏡像,直接將鏡像內(nèi)部的jdk文件夾映射到宿主機(jī)上:
docker run -i -t -v /usr/soft/java/jdk1.8.0_121:/jdk1.8.0_121/ 鏡像名稱:版本 /bin/bash
這里將容器的jdk安裝路徑/jdk1.8.0_121/掛載到宿主機(jī)的/usr/soft/java/jdk1.8.0_121
命令正常執(zhí)行了,鏡像也正常啟動(dòng)了。按照docker容器掛載目錄的方式,這樣也確實(shí)沒毛病,這樣訪問宿主機(jī)的/usr/soft/java/jdk1.8.0_121文件夾,就可以看到鏡像運(yùn)行時(shí),/jdk1.8.0_121/文件夾下產(chǎn)生的文件了。
但是在我啟動(dòng)后,進(jìn)入容器內(nèi)部,發(fā)現(xiàn)java -version命令不好使了,提示找不到j(luò)ava命令。
這就很神奇了哈。。。。。第一次運(yùn)行就正常,這次只不多改了下掛載目錄,就崩了????
腦子瓦特了半天才反應(yīng)過來,容器啟動(dòng)時(shí)掛載目錄的作用是:將容器運(yùn)行期間對(duì)應(yīng)文件夾產(chǎn)生的新文件,放于掛載目錄下。這里強(qiáng)調(diào)下新文件,意思就是,如果宿主機(jī)在運(yùn)行期間產(chǎn)生的新文件,通過掛載目錄,宿主機(jī)可以直接訪問。這點(diǎn)很容易理解。
還有一種情況就是,啟動(dòng)鏡像時(shí),鏡像內(nèi)部的某個(gè)文件夾如果不為空,也就是上面命令中使用的/jdk1.8.0_121/文件夾不為空,但是恰巧又被掛載到宿主機(jī)上某個(gè)文件夾了,恰好該文件夾是空的,那么鏡像運(yùn)行后,鏡像內(nèi)部的文件夾也會(huì)被置空。
這就是為什么我用了上面命令后,進(jìn)入容器內(nèi)部,發(fā)現(xiàn)java命令不好使了的原因。因?yàn)?jdk1.8.0_121/是空的,java命令怎么可能會(huì)正常。
退出容器內(nèi)部,使用命令:ctrl+D 或者exit,退出后,容器會(huì)自動(dòng)停止,再次啟動(dòng),可使用docker ps -a 查看鏡像運(yùn)行痕跡,使用docker start 容器ID重啟容器。
總結(jié)
以上是生活随笔為你收集整理的使用Docker 安装jdk8的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spring-boot+swagger实
- 下一篇: 21.判断栈弹出顺序是否正确