Dockerfile簡介及基於centos7的jdk鏡像製作
Dockerfile簡介
dockerfile 是一個文本格式的配置文件, 用戶可以使用 Dockerfile 來快速創建自定義的鏡像,
另外,使用Dockerfile去構建鏡像好比使用pom去構建maven項目一樣,有異曲同工之妙
dockerfile基本結構
Dockerfile 由一行行命令語句組成, 並且支持以#開頭的註釋行,一般而言, Dockerfile 主體內容分爲四部分:
基礎鏡像信息、 維護者信息、 鏡像操作指令和容器啓動時執行指令。
部分 | 命令 |
---|---|
基礎鏡像信息 | FROM |
維護者信息 | MAINTAINER |
鏡像操作指令 | RUN、(COPY/ADD)、EXPOSE、WORKDIR、ONBUILD、USER、VOLUME等 |
容器啓動時執行指令 | CMD、ENTRYPOINT |
Docker製作jdk鏡像
0.啓動虛擬機,進入centos
1.創建文件夾上傳jdk的安裝包,和在同級目錄下編寫Dockerfile文件
#創建鏡像目錄
mkdir –p /javaxl_docker/jdk
#安裝lrzsz命令
yum install lrzsz -y
#選擇文件進行上傳
rz
注意d是大寫
touch Dockerfile
2.編寫 Dockerfile 文件
#1.指定基礎鏡像,並且必須是第一條指令
FROM centos:7
#2.指明該鏡像的作者和其電子郵件
MAINTAINER hu "zs@[email protected]"
#3.在構建鏡像時,指定鏡像的工作目錄,之後的命令都是基於此工作目錄,如果不存在,則會創建目錄
WORKDIR /hu_docker/jdk
#4.一個複製命令,把jdk安裝文件複製到鏡像中,語法:ADD <src>... <dest>,注意:jdk*.tar.gz使用的是相對路徑
ADD jdk-8u221-linux-x64.tar.gz /hu_docker/jdk/
#5.配置環境變量
ENV JAVA_HOME=/hu_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.檢查是否有問題
java -version
-
dockerfile實踐經驗
-
精簡鏡像用途:儘量讓每個鏡像的用途都比較集中單一,避免構造大而複雜、多功能的鏡像
-
選用合適的基礎鏡像:容器的核心是應用,選擇過大的父鏡像(如Ubuntu系統鏡像)會造成最終生成應用鏡像的膝腫,
推薦選用瘦身過的應用鏡像或者較爲小巧的系統鏡像(alpine)
-
end…