国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

云服務器|WEB服務器|FTP服務器|郵件服務器|虛擬主機|服務器安全|DNS服務器|服務器知識|Nginx|IIS|Tomcat|

服務器之家 - 服務器技術 - 服務器知識 - IT工程師都需要掌握的容器技術之Dockerfile

IT工程師都需要掌握的容器技術之Dockerfile

2020-11-04 00:07今日頭條IT管理局 服務器知識

今天我們繼續來學習Docker技術,本篇文章主要介紹Dockerfile,Dockerffile是一個文本文件,Docker通過讀取Dockerfile文件來自動構建鏡像。

今天我們繼續來學習Docker技術,本篇文章主要介紹Dockerfile,Dockerffile是一個文本文件,Docker通過讀取Dockerfile文件來自動構建鏡像。

下面就由成哥來介紹Dockerfile的語法及使用方法吧!

01 Dockerfile概述

 

Dockerfile相當于一個文檔,用戶可以基于dockerfile生產新的容器。Dockerfile僅僅是用來制作鏡像的源碼文件,是構建容器過程中的指令,docker能夠讀取dockerfile的指令進行自動構建容器,基于dockerfile制作鏡像,每一個指令都會創建一個鏡像層,即鏡像層是多層疊加的,鏡像層數越多,效率越低。所以創建鏡像時盡量通過越少的指令完成需要的動作。Docker通過dockerfile進行build及build后的鏡像運行流程邏輯如下圖所示。

IT工程師都需要掌握的容器技術之Dockerfile

02 Dockerfile的編寫

 

(1) 上下文

上下文就是指我們build Docker鏡像時Dockerfile文件所在的目錄,構建鏡像是由Docker守護程序而不是CLI運行的,該過程的第一件事是將 Dockerfile 文件所在目錄下的所有內容遞歸的發送到守護進程。所以在大多數情況下,最好是創建一個新的目錄,在其中保存 Dockerfile,并在其中添加構建 Dockerfile 所需的文件。

現在我們就在系統中創建一個空目錄以便下面Dockerfile文件的創建及后面的鏡像構建

IT工程師都需要掌握的容器技術之Dockerfile

(2) Dockerfile格式

Dockerfile的語法格式如下所示:

1. # 格式為語法+參數   

2. INSTRUCTION arguments   

該指令不區分大小寫。但是,約定將它們大寫,以便更輕松地將它們與參數區分開。Dockerfile按順序運行指令。

(3) Dockerfile常用指令

1)FROM

一個Dockerfile 必須以開始FROM的指令。使用FROM指令指定一個基礎鏡像,后續指令將在此鏡像的基礎上運行,在一個Dockerfile文件中FROM可以出現多次,下面我們來看看FROM的語法格式

 

1. FROM [--platform=<platform>] <image> [AS <name>]   

我們創建一個Dockerfile文件,其中FROM指定以centos為基礎鏡像

1. # 指定以centos為基礎鏡像進行build   

2. FROM centos   

2)WORKDIR

WORKDIR用于指定工作目錄,所有執行的shell語句都會在該指定的目錄中運行,我們后面講的 RUN,CMD,COPY,ADD 等指令將會在指定的工作目錄中去執行。該指令也可以在一個Dockerfile文件中出現多次,最后一次出現的目錄依次是上個目錄的子目錄。如下所示:

1. WORKDIR /a   

2. WORKDIR b   

3. WORKDIR c   

4. RUN pwd   

最后這個pwd的命令執行的目錄為/a/b/c。我們繼續基于上面的指令來指定WORKDIR目錄為'/'

IT工程師都需要掌握的容器技術之Dockerfile

3)RUN

RUN 指令用于執行命令,該指令有兩種形式:

a. RUN

 
 
,使用 shell 去執行指定的命令 command,一般默認的 shell 為 /bin/sh -c

b. RUN ["executable", "param1", "param2"],使用可執行的文件或程序后面并可以跟上相關參數

下面我們通過這兩種形式來創建執行命令

1. # 第一種RUN指令方式   

2. RUN yum update   

3.    

4. # 第二種RUN指令方式   

5. RUN ["/bin/bash""-c""echo hello"]  

4)CMD

CMD 的使用方式跟 RUN 類似,其跟RUN的區別是RUN是在構建鏡像是運行執行而CMD是容器運行后執行的指令。在一個 Dockerfile 文件中只能有一個 CMD 指令,如果有多個 CMD 指令,則只有最后一個會生效。CMD也有三種命令格式具體如下

1. # 第一種執行命令推薦用法   

2. CMD ["executable","param1","param2"]   

3.    

4. # 第二種該格式主要配合ENTRYPOINT使用,CMD 指令的值會作為 ENTRYPOINT 指令的參數   

5. CMD ["param1","param2"]   

6.    

7. # 第三種執行shell form,該方法與第一種的執行效果一致   

8. CMD command param1 param2    

我們通過第一種方式來創建來執行wc的幫助指定具體如下

1. CMD ["/usr/bin/wc","--help"]   

第二種方法需要在Dockerfile中使用ENTRYPOINT指令,ENTRYPOINT 指令會覆蓋 CMD 指令作為容器運行時的默認指令,并且不會在 docker run 時被覆蓋,如下示例

1. FROM centos   

2. ENTRYPOINT ["ls""-a"]   

3. CMD ["-l"]   

上述構建的鏡像,在我們使用 docker run IT工程師都需要掌握的容器技術之Dockerfile 時等同于 docker run IT工程師都需要掌握的容器技術之Dockerfile ls -a l 命令。CMD 指令的值會被當作 ENTRYPOINT 指令的參數附加到 ENTRYPOINT 指令的后面,并且如果 docker run 中指定了參數,會覆蓋 CMD 中給出的參數。

5)COPY&ADD

COPY 和 ADD 都用于將文件,目錄等復制到鏡像中。兩者的區別在于ADD可以使用遠程URL路徑作為復制源,如果只復制本地文件建議使用COPY,兩個指令的語法格式如下:

1. # ADD命令格式   

2. ADD [--chown=<user>:<group>] <src>... <dest>   

3. ADD [--chown=<user>:<group>] ["<src>",... "<dest>"]   

4.    

5. # COPY命令格式   

6. COPY [--chown=<user>:<group>] <src>... <dest>   

7. COPY [--chown=<user>:<group>] ["<src>",... "<dest>"]   

--chown用于指定文件目錄用戶與權限, 可以指定多個,但是其路徑不能超出上下文的路徑,即必須在跟 Dockerfile 同級或子目錄中。 不需要預先存在,不存在路徑時會自動創建,如果沒有使用絕對路徑,則 為WORKDIR指定目錄的相對路徑。

6)ENV

ENV用于定義Dockerfile的環境變量,變量設置的值將在構建階段中所有后續指令的環境中使用,并且在許多情況下也可以內聯替換。其命令格式如下:

1. ENV <key>=<value> ...   

使用示例如下

1. # $MYDIR將被替換成"/mydir"   

2. ENV MYDIR="/mydir"   

3. RUN mkdir $MYDIR   

7)VOLUME

VOLUME用于在Dockerfile文件中指定掛載目錄,在容器運行時,將自動創建相應的匿名卷,其命令格式如下

1. VOLUME ["/data"]   

該條命令會在容器運行時創建一個匿名卷,同時將容器中/data目錄掛載到該卷上。

8)EXPOSE

EXPOSE指令通知Docker容器在運行時監聽指定的網絡端口。您可以指定端口是偵聽TCP還是UDP,如果未指定協議,則默認值為TCP。EXPOSE指令實際上并未發布端口。它充當構建映像的人員和運行容器的人員之間的一種文檔類型,有關打算發布哪些端口的信息。如果要將容器端口暴露出來,需要在 dcoker run 命令中使用 -p。

EXPOSE指令格式與用法示例如下:

1. # EXPOSE命令格式   

2. EXPOSE <port> [<port>/<protocol>...]   

3.    

4. # 使容器同時監聽TCP與UDP的80端口   

5. EXPOSE 80/tcp   

6. EXPOSE 80/udp   

03 Dockerfile鏡像構建

 

我們現在通過Dockerfile來構建一個nginx服務器,Dockerfile具體配置如下:

1. # 指定基礎鏡像   

2. FROM centos   

3.    

4. # 設置環境目錄   

5. WORKDIR /   

6.    

7. # 安裝nginx   

8. RUN yum install nginx -y   

9.    

10. # 容器對外暴露80端口   

11. EXPOSE 80   

12.    

13. # 啟動nginx   

14. CMD ["/usr/sbin/nginx""-g""daemon off;"]   

接著通過該Dockerfile文件進行鏡像構建,具體如下

IT工程師都需要掌握的容器技術之Dockerfile
IT工程師都需要掌握的容器技術之Dockerfile

最后我們啟動容器,同時查看nginx服務是否能夠訪問,具體操作如下

IT工程師都需要掌握的容器技術之Dockerfile
IT工程師都需要掌握的容器技術之Dockerfile
IT工程師都需要掌握的容器技術之Dockerfile

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产h片在线观看 | 中文字幕日本一区二区 | 九九九九精品九九九九 | 免费av电影观看 | 日韩精品一区二区三区免费视频 | 久久久99国产精品免费 | 国产精品久久综合 | 国产传媒一区 | 欧美 中文字幕 | 香蕉综合久久 | 亚洲日本网站 | 精品一区二区久久久久久久网站 | 午夜视频在线观看免费视频 | 四虎av成人 | 黄色美女网站免费 | 天天久久| 国产精品久久久久aaaa | 亚洲精品电影在线观看 | 欧美视频在线看 | 91免费在线视频 | 精品久久久久久久久久久 | 成人在线小视频 | av成人一区二区 | 91成人小视频 | 亚洲国产精品yw在线观看 | 91 久久| 黄网站免费看 | 亚洲成人av在线 | 亚洲艹 | 国产精品久久久久久福利一牛影视 | 亚洲激情久久 | 美女久久久 | 日韩一区二区福利 | 欧美1区2区 | 在线一区二区三区做爰视频网站 | 一色屋精品久久久久久久久久 | 人人爱人人爽 | 亚洲一区二区免费视频 | 中文字幕一二三区 | 黄色一级毛片免费看 | 色综合视频在线 |