Docker入門教程(三)Dockerfile

2021-08-29 12:15:43 字數 1913 閱讀 9892

dockerfile包含建立映象所需要的全部指令。基於在dockerfile中的指令,我們可以使用docker build命令來建立映象。通過減少映象和容器的建立過程來簡化部署。

dockerfile支援支援的語法命令如下:

instruction argument

指令不區分大小寫。但是,命名約定為全部大寫。

所有dockerfile都必須以from命令開始。from命令會指定映象基於哪個基礎映象建立,接下來的命令也會基於這個基礎映象(譯者注:centos和ubuntu有些命令可是不一樣的)。from命令可以多次使用,表示會建立多個映象。具體語法如下:

from

例如:

from ubuntu

上面的指定告訴我們,新的映象將基於ubuntu的映象來構建。

from命令,dockeffile還提供了一些其它的命令以實現自動化。在文字檔案或dockerfile檔案中這些命令的順序就是它們被執行的順序。

讓我們了解一下這些有趣的dockerfile命令吧。

1. maintainer:設定該映象的作者。語法如下:

maintainer

2. run:在shell或者exec的環境下執行的命令。run指令會在新建立的映象上新增新的層面,接下來提交的結果用在dockerfile的下一條指令中。語法如下:

run 《command》

3. add:複製檔案指令。它有兩個引數和。destination是容器內的路徑。source可以是url或者是啟動配置上下文中的乙個檔案。語法如下:

add 《src》 《destination》

4. cmd:提供了容器預設的執行命令。 dockerfile只允許使用一次cmd指令。 使用多個cmd會抵消之前所有的指令,只有最後乙個指令生效。 cmd有三種形式:

cmd ["executable","param1","param2"]

cmd ["param1","param2"]

cmd command param1 param2

5. expose:指定容器在執行時監聽的埠。語法如下:

expose ;

6. entrypoint:配置給容器乙個可執行的命令,這意味著在每次使用映象建立容器時乙個特定的應用程式可以被設定為預設程式。同時也意味著該映象每次被呼叫時僅能執行指定的應用。類似於cmd,docker只允許乙個entrypoint,多個entrypoint會抵消之前所有的指令,只執行最後的entrypoint指令。語法如下:

entrypoint ["executable", "param1","param2"]

entrypoint command param1 param2

7. workdir:指定runcmdentrypoint命令的工作目錄。語法如下:

workdir /path/to/workdir

8. env:設定環境變數。它們使用鍵值對,增加執行程式的靈活性。語法如下:

env

9. user:映象正在執行時設定乙個uid。語法如下:

user

10. volume:授權訪問從容器內到主機上的目錄。語法如下:

volume ["/data"]
與使用的其他任何應用程式一樣,總會有可以遵循的最佳實踐。你可以閱讀更多有關dockerfile的最佳實踐。

以下是我們列出的基本的dockerfile最佳實踐:

Docker 入門教程

冗餘步驟多。虛擬機器需要完整的作業系統,一些系統級別的操作步驟,往往無法跳過,比如使用者登入。啟動很慢。啟動作業系統需要多久,啟動虛擬機器就需要多久。可能要等幾分鐘,應用程式才能真正執行。體積小。容器只要包含用到的元件即可,而虛擬機器包含整個作業系統,所以容器檔案比虛擬機器檔案要小很多。啟動快。啟動...

Docker入門教程

mongodb由c 語言編寫,是乙個基於分布式檔案儲存的開源資料庫系統,支援的資料結構為bson格式。我們開始用docker進行部署我們的mongodb。我們從docker的官網找到mongo對應的映象 於是我們進行拉取 我們讓我們的mongodb 跑起來 docker run d p 2017 2...

Docker 一 Docker入門教程

docker client docker 命令列工具,是使用者使用docker的主要方式,docker client與docker daemon通訊並將結果返回給使用者,docker client也可以通過socket或者restful api訪問遠端的docker daemon docker co...