天津11选5加奖:dockerfile 詳解

作者: 魯智深 分類: docker 發布時間: 2018-09-07 02:04

dockerfile是什么

天津11选5中奖结果 www.ebzvaz.com.cn 1、手動編寫一個dockerfile文件,當然,必須要符合file的規范
2、有這個文件后,直接docker build命令執行,獲得一個自定義的鏡像
3、run

dockerfile構建過程解析

dockerfile內容知識
1、每條保留字指令必須為大寫字母且后面要跟隨至少一個參數
2、指令按照從上到下,順序執行
3、#表示注釋
4、每條都會創建一個新的鏡像層嗎,并對鏡像進行提交

dockerfile執行大致流程
1、docker從基礎鏡像運行一個容器
2、執行一條指令并對容器作出修改
3、執行類似docker commit的操作提交一個新的鏡像層
4、docker在基于剛提交的鏡像運行一個新的容器
5、執行dockerfile中的下一條指令直到所有指令都執行完成

dockerfile面向開發,docker鏡像成為交付標準,docker容器則涉及部署與運維,三者缺一不可,合力充當docker體系的基石。

dockerfile過程

dockerfile過程

dockerfile體系結構(保留字指令)

FROM 基礎鏡像,當前新鏡像是基于哪個鏡像的
MAINTAINER 鏡像維護的姓名和郵箱地址
RUN 容器構建時需要運行的命令
EXPOSE 當前容器對外暴露的端口號
WORKDIR 指定在創建容器后,終端默認登錄的進來工作目錄,一個落腳點
ENV 用來在構建鏡像過程中設置環境變量
ADD 將宿主機目錄下的文件拷貝鏡像且ADD命令會自動處理URI和解壓tar壓縮包
COPY 類似ADD,拷貝文件和目錄到鏡像中。將從構建上下文目錄中(源路勁)的文件/目錄復制到型的一層鏡像內的(目標路勁)位置。
VOLUME 容器數據卷,用于數據保存和持久化工作
CMD 指定一個容器啟動時要運行的命令,dockerfile中可以有多個CMD指令,但只有最后一個生效,CMD會被docker run之后的參數替換
ENTRYPOINT 指定一個容器啟動是運行的命令,ENTRYPOINT的目的和CMD一樣,都是在指定容器啟動程序及參數。
ONBUILD 當構建一個被繼承的dockerfile時運行命令,父鏡像在被子繼承后父鏡像的onbuild被觸發

dockerfile案例-自定義ubuntu

base鏡像(scratch)
docker hub中99%的鏡像都是通過在base鏡像中安裝和配置需要的軟件構建出來的

自定義鏡像myubuntu

需要實現的功能

需要實現的功能

1、編寫
hub默認ubuntu鏡像什么情況
dockerhub-ubuntu

準備編寫dockerfile文件

1
2
3
4
5
6
7
8
9
10
FROM ubuntu
MAINTAINER ayf<[email protected]>
ENV mypath /tmp
WORKDIR $mypath
RUN apt-get update
RUN apt-get -y install vim
RUN apt-get -y install net-tools
EXPOSE 80
CMD echo $mypath
CMD /bin/bash

2、構建docker build -t 新鏡像名字:TAG

1
docker build -f /home/atguigu/mydocker/DockerFile2 -t myubuntu:1.0 .
構建鏡像

構建鏡像

3、運行 docker run -it 新鏡像名字:TAG

1
docker run -it ad89c1081a57
運行鏡像

運行鏡像

4、列出鏡像的變更歷史 docker history 鏡像名

千層餅鏡像歷史

千層餅鏡像歷史

CMD/ENTRYPOINT鏡像案例

1、都是指定一個容器啟動是要運行的命令
2、CMD 會被 docker run之后的參數替換

cmd會被ls覆蓋掉

cmd會被ls覆蓋掉


3、ENTRYPOINT
docker run 之后的參數會被當作參數傳遞給ENTRYPOINT,之后形成新的命令組合

制作cmd版可以查詢ip信息的容器

1
2
3
4
FROM ubuntu
RUN apt-get update
RUN apt-get install -y curl
CMD ["curl", "-s", "//ip.cn"]
1
docker build -f 路徑 -t 標簽名.
docker 構建鏡像

docker 構建鏡像

docker查看鏡像

docker查看鏡像

運行鏡像

運行鏡像

查看報頭

1
2
3
4
FROM ubuntu
RUN apt-get update
RUN apt-get install -y curl
ENTRYPOINT ["curl", "-s", "//ip.cn"]

docker build 。。。。。

docker run myip2 -i 追加內容

dockerfile追加命令

dockerfile追加命令

ONBUILD案例

當構建一個被繼承的dockerfile時運行命令,父鏡像在被子繼承后父鏡像的onbuild被觸發

1
2
3
4
5
FROM ubuntu
RUN apt-get update
RUN apt-get install -y curl
ENTRYPOINT ["curl", "-s", "//ip.cn"]
ONBUILD RUN echo "father images onbuild----886"

構建鏡像

1
docker build -f 路勁 -t myip-father .

在構建一個鏡像繼承

1
2
3
4
5
6
7
8
cp Docekrfile3 Dockerfile4

FROM myip_father
RUN apt-get update
RUN apt-get install -y curl
CMD["curl", "-s", "//ip.cn"]

docker build -f 路勁 -t myip_son .
打印出父鏡像命令

打印出父鏡像命令

如果覺得我的文章對您有用,請隨意打賞。您的支持將鼓勵我繼續創作!

發表評論

電子郵件地址不會被公開。 必填項已用*標注