Google Code Prettify

2018年1月5日 星期五

製作包含 java 的 docker 鏡像

在看完「docker 基本指令」後,我們已經可以製作一個 centos 的鏡像,這篇要在這個鏡像中安裝 Java 9,並且包裝成鏡像。首先下載 Open JDK,下載後我將它放在 /home/steven/Software 目錄下,如下: (openjdk-9.0.1_linux-x64_bin.tar.gz)
接下來 … 要開始了 …
  • docker run -i -t -v /home/steven/Software:/mnt/software centos /bin/bash
下了 docker run 後,因為我之前安裝的 centos 鏡像已經被我移除,在本機找不到後,docker 自動連到 docker hub 再下載一個。這次的 docker run 指令後又多了 -v 參數,這是要掛載磁碟,將本機的 /home/steven/Software 掛載到 centos container 裡的 /mnt/software,所以,在進入 container 後,下 ls -l 指令,又可以看到和本機 /home/steven/Software 一樣的內容。

-i: 即 --interactive, 這個參數要求 docker 保持標準輸入裝置 (stdin)
-t: 即 --tty,這個參數要求 docker 分配一個終端裝置
  •  tar zxvf openjdk-9.0.1_linux-x64_bin.tar.gz -C /usr/local
進入 /mnt/software 目錄後,以上述指令將 open jdk 9 解壓縮到 /usr/local 目錄下,如上圖,可以看到 /usr/local 目錄裡產生了 jdk-9.0.1。
  • ln -s /usr/local/jdk-9.0.1 /usr/bin/java
為了方便存取,建立一個連結到 /usr/bin/java。
  • ./java -version
進入 /usr/bin/java/bin 目錄,下 java -version 指令看一下 jdk 版本,如上,果然是 9.0.1 版。
  • docker ps -a
離開 container 回到本機,下 docker ps -a 看一下剛剛創建的 container,如上圖。
  •  docker commit 87426bc47a5e steven/java9
如上下 docker commit 提交一個鏡像,我們將它命名為 steven/java9 (87426bc47a5e 為 container ID),這個指令執行需要一點點時間,然後提交後顯示出鏡像 ID。
  • docker images
下 docker images 列出所有鏡像,果然可以看到 steven/java9,IMAGE ID 也正確。
  • docker run --rm steven/java9 /usr/bin/java/bin/java -version
使用 docker run 指令啟動剛製作好的鏡像的 container,並且執行該 container 中的 /usr/bin/java/bin/java -version 看看是不是和之前安裝好後執行出來的版本一樣? 如上圖這樣就確認我們確實有安裝好了! --rm 參數是要求 docker 在執行完指令退出 container 後立即刪除該 container。



沒有留言:

張貼留言