目的:
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命令前會先cd
進WORKDIR
后面的目錄
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 //拷貝到容器
-
創建文件夾上傳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
謝謝觀看!!