Docker之dockerfile制作jdk鏡像


目的:

  Dockerfile簡介

  Dockerfile制作jdk鏡像


 

Dockerfile簡介

  了解dockerfile之前要先了解Docker基本概念和使用可參考:https://www.cnblogs.com/huangting/p/11960196.html

  Dockerfile是一個文本文檔,文本里面包含了很多命令,每一條命令構建一層,因此每一條指令的內容,就是描述該層應當如何構建。有了 Dockerfile,當我們定義自己額外添加的需求時,只需在 Dockerfile 上添加或者修改指令,重新docker image build即可,省去了敲命令的麻煩。

  殷切我們使用Docker時其中的鏡像和容器都是基於Dockerfile運行的,所以Dockerfile可以快速定義鏡像;

簡單來說就如同pom文件去構建maven工程一樣

 

我們來用一張圖來康康鏡像,容器和Docker之間的關系:

  這三者的關系就是  Dockerfile構建鏡像,然后運行鏡像啟動容器。

Dockerfile基本結構

    Dockerfile 由一行行命令語句組成,並支持以 # 開頭的注釋行。例如:

  主體內容分為四部分:

       基礎鏡像信息、 維護者信息、 鏡像操作指令和容器啟動時執行指令。

  基礎鏡像信息 FROM: 指令用於指定要構建的鏡像的基礎鏡像。它通常是 Dockerfile 中的第一條指令。 維護者信息  MAINTAINER: 指令設置生成圖像的作者字段。 鏡像操作指令 RUN: 指令用於在鏡像中執行命令,這會創建新的鏡像層。每個 RUN 指令創建一個新的鏡像層。
               (COPY
/ADD): 指令用於將文件作為一個新的層添加到鏡像中。通常使用 COPY 指令將應用代碼賦值到鏡像中。
               EXPOSE: 指令用於記錄應用所使用的網絡端口。
               WORKDIR:在執行RUN后面的shell命令前會先cdWORKDIR后面的目錄
               ONBUILD:指令將映像用作另一個構建的基礎時,將在以后的時間向該映像添加觸發指令。
容器啟動時執行指令 CMD:
指令中只能有一條指令Dockerfile,如果列出多個,則只有最后一個CMD才會生效,指令的主要目的是為執行中的容器提供默認值。
               ENTRYPOINT:指令用於指定鏡像以容器方式啟動后默認運行的程序。

 

Dockerfile參數詳解:https://docs.docker.com/engine/reference/builder/

 

 這是Docker官網:https://docs.docker.com/

我們在Docker中下載鏡像就是在這里下載,然而這些鏡像也是大神用Dockerfile寫出來的,所以今天我們也要使用Docker來自定義一個jdk鏡像,提供給自己用。

 


Dockerfile制作jdk鏡像

   像以前的話,我們直接下載一個jdk鏡像或者搞個jdk壓縮包。

  

      

  然后把它放進centos中,解壓不,然后去找etc下的profile文件,在里面添加你存放jdk的地址。

  

  然后java -version測試

   

     現在我們自己用Docker制作來制作JDK鏡像

啟動虛擬機,進入centos

 #創建鏡像目錄
      mkdir –p /javaxh_docker/jdk

  

#安裝lrzsz命令  yum install lrzsz -y  //沒有就下載,有就不用下載,我之前一直下載失敗,我以為鏡像有問題,結果發現他自己有。
#選擇文件進行上傳
    rz  


 # 注意d是大寫
      touch Dockerfile   //拷貝到容器 

     

  1. 創建文件夾上傳jdk的安裝包,和在同級目錄下編寫Dockerfile文件

    執行vi Dockerfile 把下面的內容放進Dockerfile文件中:

     #1.指定基礎鏡像,並且必須是第一條指令
        FROM centos:7

        #2.指明該鏡像的作者和其電子郵件
        MAINTAINER xxx "xxx@qq.com"

        #3.在構建鏡像時,指定鏡像的工作目錄,之后的命令都是基於此工作目錄,如果不存在,則會創建目錄
        WORKDIR /javaxh_docker/jdk

        #4.一個復制命令,把jdk安裝文件復制到鏡像中,語法:ADD <src>... <dest>,注意:jdk*.tar.gz使用的是相對路徑
        ADD jdk-8u221-linux-x64.tar.gz /javaxh_docker/jdk/

        #5.配置環境變量
        ENV JAVA_HOME=/javaxh_docker/jdk/jdk1.8.0_221
        ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
        ENV PATH=$JAVA_HOME/bin:$PATH

        #容器啟動時需要執行的命令
        #CMD ["java","-version"]

   

3.執行Dockerfile文件,初次依賴鏡像的時候會下載相應鏡像

docker build -t jdk8:v1.0 .

 

   注1:-t  jdk8:v1.0  給新構建的鏡像取名為 jdk8, 並設定版本為 v1.0

      注2:注意最后有個點,代表使用當前路徑的 Dockerfile 進行構建

  4.查看鏡像

docker images

 

  

  5.創建並啟動容器

docker run -it jdk8:v1.0 /bin/bash

  6.檢查是否有問題

 javac

 

 

 

謝謝觀看!!

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM