一、DockerFile 文件
Dockerfile是用來構建Docker鏡像的文本文件,是由一條條構建鏡像所需的指令和參數構成的腳本。
官網:https://docs.docker.com/engine/reference/builder/
構建dockerFile文件三部曲
-
編寫DockerFile文件
-
docker build 命令構建鏡像
-
docker run 鏡像運行容器實例
1.1 DockerFile構建過程
1.1.1 基礎知識
- 每條保留字指令都必須為大寫字母且后面要跟隨至少一個參數
- 指令按照從上到下,順序執(zhí)行
- #表示注釋
- 每條指令都會創(chuàng)建一個新的鏡像層并對鏡像進行提交
1.1.2 docker執(zhí)行DockerFile的大致流程
- docker從基礎鏡像運行一個容器
- 執(zhí)行一條指令并對容器做出修改
- 執(zhí)行類似docker commit的操作提交一個新的鏡像
- docker再基于剛提交的鏡像運行一個新容器
- 執(zhí)行dockerfile的下一條指令直到所有的指令都執(zhí)行完成
1.2 Dockerfile常見的關鍵字
名稱 | 含義 |
---|---|
FROM | 基礎鏡像,表示當前鏡像是基于哪個鏡像,指定一個已經存在的鏡像作為模板 |
MAINTAINER | 鏡像維護者的姓名和郵箱地址 |
RUN | 容器構建時需要運行的命令,比如 RUN yum -y install vim,注意這里的RUN是在docker build時運行 |
EXPOSE | 當前容器對外暴露的端口 |
WORKDIR | 指定在創(chuàng)建容器后,終端默認登錄的工作目錄(落腳點) |
USER | 指定該鏡像以什么樣的用戶去執(zhí)行,如果不指定,默認是root |
ENV | 用來構建鏡像過程中設置環(huán)境變量,例如:ENV MY_PATH /usr/mytest 則在后面可以直接使用WORKDIR $MY_PATH |
ADD | 將宿主機目錄下的文件拷貝鏡像且會自動處理URL和解壓tar壓縮包 |
COPY | 類似ADD,拷貝文件和目錄到鏡像中。將從構建上下文目錄中 <源路徑> 的文件/目錄復制到新的一層的鏡像內的 <目標路徑> 位置 COPY src dest |
VOLUME | 容器數據卷,用于數據保存和持久化工作 |
CMD | 指定容器啟動后要干的事情 Dockerfile 中可以有多個 CMD 指令,但只有最后一個生效,CMD 會被 docker run 之后的參數替換 |
ENTRYPOINT | 也是用來指定一個容器啟動時要運行的命令 |
注意1:
CMD與RUN,CMD是在docker run時運行,而RUN是在docker build時運行
注意2:
1、類似于 CMD 指令,但是ENTRYPOINT不會被docker run后面的命令覆蓋,而且這些命令行參數會被當作參數送ENTRYPOINT 指令指定的程序這樣做的優(yōu)點是在執(zhí)行docker run的時候可以指定 ENTRYPOINT 運行所需的參數。但是當Dockerfile 中如果存在多個 ENTRYPOINT 指令,僅最后一個生效。
2、ENTRYPOINT可以和CMD一起用,一般是變參才會使用 CMD ,這里的 CMD 等于是在給 ENTRYPOINT 傳參。
當指定了ENTRYPOINT后,CMD的含義就發(fā)生了變化,不再是直接運行其命令而是將CMD的內容作為參數傳遞給ENTRYPOINT指令
1.3 自定義鏡像mycentosjava8
目的:是在centos7鏡像的基礎上具備vim+ifconfig+jdk的功能
步驟1:在jDK官網下載鏡像https://mirrors.yangxingzhen.com/jdk/
步驟2:準備編寫Dockerfile文件,注意一定是大寫的D,鍵入以下內容
FROM centos:7
MAINTAINER zpyl<3112019422@qq.com>
ENV MYPATH /usr/local
WORKDIR $MYPATH
#安裝vim編輯器
RUN yum -y install vim
#安裝ifconfig命令查看網絡IP
RUN yum -y install net-tools
#安裝java8及l(fā)ib庫
RUN yum -y install glibc.i686
RUN mkdir /usr/local/java
#ADD 是相對路徑jar,把jdk-8u211-linux-x64.tar.gz添加到容器中,安裝包必須要和Dockerfile文件在同一位置
ADD jdk-8u211-linux-x64.tar.gz /usr/local/java/
#配置java環(huán)境變量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_211
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH
EXPOSE 80
CMD echo $MYPATHCMD echo "success--------------ok"
CMD /bin/bash
步驟3:準備構建
# docker build -t 新鏡像的名字:TAG .
docker build -t java8centos:1.5 .
# 注意
# 新鏡像的名字一定要全小寫
# TAG之后一定要空格之后在打.
步驟4:運行
docker run -it java8centos:1.5 /bin/bash
1.4 虛懸鏡像
定義:倉庫、標簽都是<none>的鏡像
查看:docker image ls -f dangling=true
虛懸鏡像已經失去了存在的價值,是可以隨意刪除的,可以用下面的命令刪除文章來源:http://www.zghlxwxcb.cn/news/detail-488276.html
docker image prune文章來源地址http://www.zghlxwxcb.cn/news/detail-488276.html
到了這里,關于4、DockerFile文件的使用的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!