<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                >[info] Dockerfile指令說明 ~~~console FORM # 基礎鏡像,一切從這里開始構建 MAINTAINER # 鏡像是誰寫的,姓名+郵箱 RUN # 鏡像構建的時候需要運行的命令 ADD # 步驟:tomcat 鏡像,這個tomcat壓縮包!添加內容 WORKDIR # 鏡像的工作目錄 VOLUME # 掛載的目錄 EXPOSE # 暴露端口 CMD # 指定這個容器啟動的時候要運行的命令(只有最后一個會生效,可被替代) ENTRYPOINT # 指定這個容器啟動的時候要運行的命令(命令行可以追加命令) ONBUILD # 當構建一個被繼承 DockerFile 這個時候就會運行 ONBUILD 指令。觸發指令。 COPY # 類似ADD,將我們文件拷貝到鏡像中 ENV # 構建的時候設置環境變量 ~~~ ![](https://img.kancloud.cn/82/c1/82c1ade229b4deddef965573431a96a4_841x471.png) ``` FROM 指定基礎鏡像 該指令有兩種格式: FROM < image > FROM < image >:< tag > 指定基礎image為該image的一個tag版本。 FROM scratch 不指定基礎鏡像 指定待擴展的父級鏡像。除了注釋外,在文件開頭必須是一一個FROM指令, 接下來白指令便在這個父級鏡像 的環境中運行,直到遇到下一一個FROM指令。通過 添加多個FROM命令可以在同一個Dockerfile文件中創建 多個鏡像。 所謂定制鏡像,那一定是以一個鏡像為基礎,在其上進行定制。就像我們之前運行了一個redis鏡像的容器, 再進行修改一樣,基礎鏡像是必須指定的。而 FROM 就是指定基礎鏡像,因此一個 Dockerfile 中 FROM 是必備的指令,并且必須是第一條指令。 在 Docker Store 上有非常多的高質量的官方鏡像,有可以直接拿來使用的服務類的鏡像,如nginx 、 redis 、 mongo 、 mysql 、 httpd 、 php 、 tomcat 等;如 果沒有找到對應服務的鏡像,官方 鏡像中還提供了一些更為基礎的操作系統鏡像,如ubuntu 、 debian 、centos、 alpine 等這些操作 系統的軟件庫 一般會以alpine為主,因為節約的資源比較少。 ``` ``` RUN RUN可以運行任何被基礎image支持的命令。如基礎image選擇了centos,那么軟件管理部分只能使用 centos的命令。該指令有兩種格式: 1. RUN < command > 2. RUN ["executable", "param1", "param2"] 3. RUN [" /bin/bash","-c", ”echo docker"] 4. 注: 多行命令不要寫多個RUN,原因是Dockerfile中每一個指令都會建立一層。 多少個RUN就構建了多少層鏡像,會造成鏡像的臃腫、多層,不僅僅增加了構件部署的時間,還容易出 錯。 RUN書寫時的換行符是 \ ``` ``` ENV 構建指令,在image中設置一個環境變量。 格式: ENV <key> <value> ENV <key1>=<value1> <key2>=<value2>... 設置容器運行的環境變量。在運行容器的時候,通過-e參數可以修改這個環境變量值,也可以添加新的環境變 量: 在系統中可以執行如下命令就可以看到ENV的信息 以下示例設置 NODE_VERSION = 7.2.0 , 在后續的指令中可以通過 $NODE_VERSION 引用: ENV NODE_VERSION 7.2.0 RUN curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linuxx64.tar.xz" \ && curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" ``` ``` VOLUME 定義匿名數據卷。在啟動容器時忘記掛載數據卷,會自動掛載到匿名卷。 容器與宿主機之間數據共享 數據卷的修改會立即影響到對應容器 作用: 避免重要的數據,因容器重啟而丟失,這是非常致命的。避免容器不斷變大。數據卷默認會一直存在,即使容 器被刪除 格式: VOLUME ["<路徑1>", "<路徑2>"...] VOLUME <路徑> ro 容器內只讀 在啟動容器 docker run 的時候,我們可以通過 -v 參數修改掛載點。 ``` ``` WORKDIR 指定工作目錄。用 WORKDIR 指定的工作目錄,會在構建鏡像的每一層中都存在。(WORKDIR 指定的工作目 錄,必須是提前創建好的)。 docker build 構建鏡像過程中的,每一個 RUN 命令都是新建的一層。只有通過 WORKDIR 創建的目錄才 會一直存在。 格式: WORKDIR <工作目錄路徑> WORKDIR /path/to/workdir WORKDIR /a ``` ``` USER 用于指定執行后續命令的用戶和用戶組,這邊只是切換后續命令執行的用戶(用戶和用戶組必須提前已經存 在) 格式: USER <用戶名>[:<用戶組>] 設置指令,設置啟動容器的用戶,默認是root用戶。 ``` ``` COPY 復制指令,從上下文目錄中復制文件或者目錄到容器里指定路徑。 基本格式: 格式1:COPY <源路徑>...<目標路徑> 格式2:COPY [“<源路徑1>”,....."<目標路徑>"] ``` ``` ADD 更高級的復制文件,在COPY的基礎上增加了一些功能,如果復制的是壓縮包的話,會直接解壓,而不需要在使 用RUN解壓; ADD 指令和 COPY 的使用格式一致(同樣需求下,官方推薦使用 COPY)。功能也類似,不同之處如下: ADD 的優點:在執行 <源文件> 為 tar 壓縮文件的話,壓縮格式為 gzip, bzip2 以及 xz 的情況下, 會自動復制并解壓到 <目標路徑>。 ADD 的缺點:在不解壓的前提下,無法復制 tar 壓縮文件。會令鏡像構建緩存失效,從而可能會令鏡像構建 變得比較緩慢。具體是否使用,可以根據是否需要自動解壓來決定。 用來從context上下文復制新文件、目錄或遠程文件url,并將它們添加到位于指定路徑的映像文件系統中 ``` ``` ARG 構建參數,與 ENV 作用一至。不過作用域不一樣。ARG 設置的環境變量僅對 Dockerfile 內有效,也就 是說只有 docker build 的過程中有效,構建好的鏡像內不存在此環境變量。 構建命令 docker build 中可以用 --build-arg <參數名>=<值> 來覆蓋。 格式: ARG <參數名>[=<默認值>] ``` ``` CMD 類似于 RUN 指令,用于運行程序,但二者運行的時間點不同: CMD 在docker run 時運行。 RUN 是在 docker build。 用于container啟動時指定的操作。該操作可以是執行自定義腳本,也可以是執行系統命令。 該指令只能在文件中存在一次,如果有多個,則只執行最后一條 1. CMD ["executable","param1","param2"] 2. CMD ["param1","param2"] 3. CMD command param1 param2 舉例: CMD [ "echo", "$HOME" ] 注意:參數的一定要用雙引號,就是",不能是單引號。千萬不能寫成單引號。 CMD 指令指定的程序可被 docker run 命令行參數中指定要運行的程序所覆蓋。 ``` ``` ENTRYPOINT 類似于 CMD 指令,但其不會被 docker run 的命令行參數指定的指令所覆蓋,而且這些命令行參數會被當 作參數送給 ENTRYPOINT 指令指定的程序。 但是, 如果運行 docker run 時使用了 --entrypoint 選項,此選項的參數可當作要運行的程序覆蓋 ENTRYPOINT 指令指定的程序。 優點:在執行 docker run 的時候可以指定 ENTRYPOINT 運行所需的參數。 注意:如果 Dockerfile 中如果存在多個 ENTRYPOINT 指令,僅最后一個生效。 格式: ENTRYPOINT ["<executeable>","<param1>","<param2>",...] 可以搭配 CMD 命令使用:一般是變參才會使用 CMD ,這里的 CMD 等于是在給 ENTRYPOINT 傳參 我們在運行容器的時候可以通過 --entrypoint來覆蓋dockerfile中的命令 ``` ``` EXPOSE (暴露容器端口) 用來指明容器內進程對外開放的端口,多個端口之間使用空格隔開。 運行容器通過參數-P(大寫)即可將EXPOSE里所指定的端口映射到主機上另外的隨機端口, 容器或主機就可以通過映射后的端口與此容器通信。 同時,我們也可以通過-p (小寫)參數將dockerfile中EXPOSE中沒有列出的端口設置成公開的。 注意,expose只是開放端口 然后我們執行把命令改成這樣,讓容器的端口與宿主機的端口綁定的通過-p參數 設置 docker run -d -p 8000:80 nginx 這個 -p 8000:80 是告訴宿主機用戶訪問8000端口轉發至容器80上 ``` ``` HEALTHCHECK 用于指定某個程序或者指令來監控 docker 容器服務的運行狀態。 格式: HEALTHCHECK [選項] CMD <命令>:設置檢查容器健康狀況的命令 HEALTHCHECK NONE:如果基礎鏡像有健康檢查指令,使用這行可以屏蔽掉其健康檢查指令 HEALTHCHECK [選項] CMD <命令> : 這邊 CMD 后面跟隨的命令使用,可以參考 CMD 的用法。 ``` ``` ONBUILD 用于延遲構建命令的執行。簡單的說,就是 Dockerfile 里用 ONBUILD 指定的命令,在本次構建鏡像的 過程中不會執行(假設鏡像為 test-build)。當有新的 Dockerfile 使用了之前構建的鏡像 FROM test-build ,這是執行新鏡像的 Dockerfile 構建時候,會執行 test-build 的 Dockerfile 里的 ONBUILD 指定的命令。 格式: ONBUILD <其它指令> ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看