docker技術(shù)入門與實踐(三)

Dockerfile結(jié)構(gòu)

通常dockfile包含4部分

  • 基礎(chǔ)鏡像
  • 維護(hù)者信息
  • 鏡像操作指令
  • 容器啟動時執(zhí)行指令

dockerfile示例
?#這是一個示例
?#基于ubuntu image
?#version 2
?#author:me
?#command format: Instruction [arg/command]
?
?#第一行必須是指定的基礎(chǔ)鏡像
?FROM ubuntu
?
?#維護(hù)者信息,名稱和信箱
?MAINTAINER dockeruser docker@docker.com
?
?#鏡像的操作指令,每執(zhí)行一次run指令,鏡像就添加一層
?RUN echo “deb http://archive.ubuntu.com/ubuntu/ raring main universe ” >>/etc/apt/ources.list
?RUN apt-get update && apt-get install -y nginx
?
?#容器啟動時執(zhí)行的指令
?CMD /usr/sbin/nginx

操作指令

1.FROM
?FROM image,引出基礎(chǔ)鏡像。一個dockerfile可以引入多個基礎(chǔ)鏡像。
2.MAINTAINER
?MAINTAINER <name>指定維護(hù)者信息
3.RUN
?RUN <command> 在shell終端中運行命令,即/bin/sh -C  
?RUN["executable","param1","param2"] 使用exec執(zhí)行。
?命令較長時,可以使用\換行
4.CMD
?指定容器啟動時執(zhí)行的命令,每個dockerfile只能有1條CMD命令,多個CMD只會執(zhí)行最后一條。容器啟動時,指定了運行命令,則會覆蓋到dockerfile里的CMD命令。
?* CMD ["executable","para1","para2"]使用exec執(zhí)行,推薦使用。
?* CMD command para1 para2 在/bin/sh中執(zhí)行,提供給需要交互的應(yīng)用。
?* CMD ["para1","para2"]提供給ENTRYPOINT的默認(rèn)參數(shù)。
5.EXPOSE
?EXPOSE<port> [<port>]指定暴露給主機(jī)的端口。
6.ENV
?ENV <key> <value>指定環(huán)境變量,后續(xù)的run指令使用,并在容器運行期間保持
7.ADD
?ADD <src> <dest>將src指定目錄或url的文件或目錄,復(fù)制到容器的dest
8.COPY
?COPY <src> <dest>對于dockerfile所在目錄現(xiàn)對路徑文件或目錄,復(fù)制到容器的dest,dest不存在會自動創(chuàng)建。
9.ENTRYPOINT
? 配置容器啟動后執(zhí)行的命令,不能被docker run提供的參數(shù)覆蓋。每個dockerfile只能有一個ENTRYPOINT,多個ENTRYPOINT只有最后一個生效。
?ENTRYPOINT ["executable","para1","para2"]
?ENTRYPOINT command para1 para2(在shell中執(zhí)行)。
10.VOLUME
? VOLUME [“/data”] 創(chuàng)建一個可以從宿主機(jī)或其他容器掛載的掛載點。
11.USER
?USER daemon指定容器運行時的用戶名或uid,也可以在RUN時指定用戶
12.WORKDIR
?WORKDIR /path/to/workdir 為后續(xù)的RUN、CMD、ENTRYPOINT指定配置工作目錄,可以使用多個WORKDIR指令,后續(xù)命令如果參數(shù)是相對目錄,則會基于之前命令的路徑。
13.ONBUILD
?配置從當(dāng)前鏡像創(chuàng)建其他鏡像時,執(zhí)行的指令

創(chuàng)建鏡像

docker build
?編寫為dockerfile后,通過該命令來創(chuàng)建鏡像。docker build [option] path 讀取指定路徑下(含子目錄)的dockerfile,并將該路徑下所有內(nèi)容發(fā)送給docker服務(wù)端,有服務(wù)端來創(chuàng)建鏡像,因此一般建議防止dockerfile的目錄為空目錄。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載自 http://blog.opskumu.com/docker.html 一、Docker 簡介 Docke...
    極客圈閱讀 10,544評論 0 120
  • 0. 前言 docker是什么?docker是用GO語言開發(fā)的應(yīng)用容器引擎,基于容器化,沙箱機(jī)制的應(yīng)用部署技術(shù)。可...
    sessionboy閱讀 3,884評論 2 49
  • docker基本概念 1. Image Definition 鏡像 Image 就是一堆只讀層 read-only...
    慢清塵閱讀 8,836評論 1 21
  • 1 我的同事劉小年是個熱情澎湃的人,善用老大姐氣氛炒熱全場,對,就是有一種迷之閑人馬大姐的既視感。 她最讓我佩服的...
    高跟鞋戰(zhàn)士閱讀 424評論 0 0
  • 第一次認(rèn)識丁香花,始于讀戴望舒的《雨巷》,那個撐著油紙傘的丁香姑娘,走在悠長而又寂寥的雨巷,帶著淡淡的憂傷……那一...
    天長地久_fba9閱讀 463評論 0 2