文章出處

回到目錄

一些理論

我們都知道docker這個容器工具可以幫助我們快速進行環境的部署,這對于運營人員來說,無疑是個福音,而這個工作大叔認為不應該是運營人員干的,而是由開發人員來做,因為只有你知道你干的是什么,你干了它,就應該要部署它,或者把部署的過程寫成一個腳本,讓運營人員去執行,就可以了,這也許就是docker產生的原因吧!

Dockerfile是為快速構建docker image而設計的,當你使用docker build 命令的時候,docker 會讀取當前目錄下的命名為Dockerfile(首字母大寫)的純文本文件并執行里面的指令構建出一個docker image。

Dockerfile的組合可以用一張圖來表示

 

Dockerfile的一些命令

Dockerfile是將一組腳本組合在一個文件中,然后它讓批量執行,而腳本中最重要的就是FROM,它告訴docker要啟動哪個鏡像,然后后觀的動作都是針對這個image來執行——我們要想執行一個Dockerfile文件,可以使用下面的代碼:

$ docker build -f /path/to/a/Dockerfile .

下面是從eshoponcontainer中截取的一個Dockerfile文件的內容,我們可以學習一下

FROM microsoft/aspnetcore:1.1.2
ARG source
WORKDIR /app
EXPOSE 80
COPY ${source:-obj/Docker/publish} .
ENTRYPOINT ["dotnet", "Basket.API.dll"]

從上面代碼中,我們看到Dockerfile有幾個命令,下面具體說明一下

FROM
基于哪個鏡像
RUN
安裝軟件用
MAINTAINER
鏡像創建者
CMD
Container啟動時執行的命令,但是一個Dockerfile中只能有一條CMD命令,多條則只執行最后一條CMD.
CMD主要用于container時啟動指定的服務,當Docker run command的命令匹配到CMD command時,會替換CMD執行的命令。
ENTRYPOINT
container啟動時執行的命令,但是一個Dockerfile中只能有一條ENTRYPOINT命令,如果多條,則只執行最后一條
ENTRYPOINT沒有CMD的可替換特性
USER
使用哪個用戶跑container
EXPOSE
container內部服務開啟的端口。主機上要用還得在啟動container時,做host-container的端口映射:
ADD
將文件<src>拷貝到container的文件系統對應的路徑<dest>
所有拷貝到container中的文件和文件夾權限為0755,uid和gid為0
如果文件是可識別的壓縮格式,則docker會幫忙解壓縮

如果要ADD本地文件,則本地文件必須在 docker build <PATH>,指定的<PATH>目錄下

如果要ADD遠程文件,則遠程文件必須在 docker build <PATH>,指定的<PATH>目錄下。
 注意:使用docker build - < somefile方式進行build,是不能直接將本地文件ADD到container中。只能ADD    url file.
ADD只有在build鏡像的時候運行一次,后面運行container的時候不會再重新加載了。
VOLUME
可以將本地文件夾或者其他container的文件夾掛載到container中。

WORKDIR
切換目錄用,可以多次切換(相當于cd命令),對RUN,CMD,ENTRYPOINT生效
ONBUILD
ONBUILD 指定的命令在構建鏡像時并不執行,而是在它的子鏡像中執行

好了,今天就說這么多,總之我們要知道,Dockerfile主要用來快速生成image和快速部署應用環境的!

回到目錄


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()