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 /lww_docker/jdk
#安裝lrzsz命令
yum install lrzsz -y
#選擇文件進行上傳
rz
#創建 Dockerfile文件 注意d是大寫
touch Dockerfile
2.編寫 Dockerfile 文件
#1.指定基礎鏡像,並且必須是第一條指令 FROM centos:7 #2.指明該鏡像的作者和其電子郵件 MAINTAINER lww "lww@qq.com" #3.在構建鏡像時,指定鏡像的工作目錄,之后的命令都是基於此工作目錄,如果不存在,則會創建目錄 WORKDIR /lww_docker/jdk #4.一個復制命令,把jdk安裝文件復制到鏡像中,語法:ADD <src>... <dest>,注意:jdk*.tar.gz使用的是相對路徑 ADD jdk-8u221-linux-x64.tar.gz /lww_docker/jdk/ #5.配置環境變量 ENV JAVA_HOME=/lww_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
4. dockerfile實踐經驗
1. 精簡鏡像用途:盡量讓每個鏡像的用途都比較集中單一,避免構造大而復雜、多功能的鏡像
2. 選用合適的基礎鏡像:容器的核心是應用,選擇過大的父鏡像(如Ubuntu系統鏡像)會造成最終生成應用鏡像的膝腫,
推薦選用瘦身過的應用鏡像或者較為小巧的系統鏡像(alpine)