1. 程式人生 > 實用技巧 >shipyard中文版安裝教程(附安裝指令碼)

shipyard中文版安裝教程(附安裝指令碼)

Dockerfile是什麼?

用於構建映象的文字檔案。

Dockerfile基本內容

FROM nginx 定製一個基於nginx的映象
RUN:
shell格式:
RUN 命令列命令 等同於在終端操作的shell命令
exec格式:
RUN ["可執行檔案","引數1","引數2"] 等價於 RUN 可執行檔案 引數1 引數2

  ps:Dockerfile 的指令每執行一次都會在 docker 上新建一層。所以過多無意義的層,會造成映象膨脹過大。
        FROM centos
        RUN yum install wget
        RUN wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz"
        RUN tar -xvf redis.tar.gz
        以上執行會建立 3 層映象。可簡化為以下格式:
        FROM centos
        RUN yum install wget \
            && wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz" \
            && tar -xvf redis.tar.gz

如上,以 && 符號連線命令,這樣執行後,只會建立 1 層映象。

構建映象

docker build -t nginx:v3 .

上下文路徑
有提到指令最後一個 . 是上下文路徑,那麼什麼是上下文路徑呢?

上下文路徑,是指 docker 在構建映象,有時候想要使用到本機的檔案(比如複製),docker build 命令得知這個路徑後,會將路徑下的所有內容打包。

解析:由於 docker 的執行模式是 C/S。我們本機是 C,docker 引擎是 S。實際的構建過程是在 docker 引擎下完成的,所以這個時候無法用到我們本機的檔案。這就需要把我們本機的指定目錄下的檔案

一起打包提供給 docker 引擎使用。

如果未說明最後一個引數,那麼預設上下文路徑就是 Dockerfile 所在的位置。

ps:上下文路徑下不要放無用的檔案,因為會一起打包傳送給 docker 引擎,如果檔案過多會造成過程緩慢。

常用命令

CMD

類似於 RUN 指令,用於執行程式,但二者執行的時間點不同:
CMD 在docker run 時執行。
RUN 是在 docker build。