您好,登錄后才能下訂單哦!
這篇文章給大家介紹如何搭建Dockerfile構建鏡像,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
幾乎所有的image都是通過Dockerfile生成出來的,使用Dockerfile可以讓我們很輕松的構建出一個鏡像,我們如果需要部署自己的程序常常也可會Dockerfile把代碼和環境構建成一個image進行使用
以hub.docker中的項目來說,一般作者都會存放這個image對應的Dockerfile,我們也可以直接使用Dockerfile來生成自己的nginx鏡像
Dockerfile可以基于任何鏡像的技術上搭建環境,可以基于別人做好的鏡像比如Nginx,也可以基于基礎鏡像比如centos等,這里基于nginx鏡像構建出本地的nginx:local并且運行鏡像不在啟動nginx只是輸出一條nginx
> vim Dockerfile FROM nginx:1.13.12 CMD ["echo", "nginx"] > docker build -t nginx:local . > docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx local 6ea964efbbc8 10 seconds ago 109 MB > docker run -it nginx:local > docker run -it nginx:local nginx
使用以下的語法可以實現各種各樣的鏡像
FROM:指定父鏡像,可以通過添加多個FROM,在同一個Dockerfile中創建多個鏡像
MAINTAINER:維護者信息,可選
RUN:用來修改鏡像的命令,可以用來安裝程序,當一條RUN完成后,會在當前的鏡像上創建一個新的鏡像層,接下來的指令會在新的鏡像層上執行。有2種形式。
RUN [“apt-get”, “update”],調用exec
RUN apt-get update,調用的/bin/sh
EXPOSE:用來指明容器內進程對外開放的端口。在docker run的時候可以加-p(可以將EXPOSE中沒列出的端口設置為對外開放)和-P(EXPOSE里所指定的端口映射到主機上另外的隨機端口???)來設置端口。
ADD:向新容器中添加文件,文件可以是
主機文件:必須是相對Dockerfile所在目錄的相對路徑(如果是壓縮文件,docker會解壓縮)
網絡文件:URL文件,在創建容器時會下載下來添加到鏡像中。(如果是壓縮文件,docker不會解壓縮)
目錄:必須是相對Dockerfile所在目錄的相對路徑(如果是壓縮文件,docker會解壓縮)
COPY: 與ADD的區別是COPY的<src>只能是本地文件,其他用法一致
VOLUME:會在鏡像里創建一個指定路徑的掛載點。這個路徑可以來自主機,也可以來自其他容器,多個容器通過同一個掛載點來共享數據,即便有個容器已經停止,其余容器還是可以訪問掛載點,只有當掛載點所有的容器引用消失,掛載點才會自動刪除。
WORKDIR:為接下來的指令指定一個新的工作目錄。當啟動一個容器后,最后一條WORKDIR指令所指向的目錄為容器當前運行的工作目錄。
ENV:設置環境變量,在docker run 時可以用-e來設置環境變量docker run -e WEBAPP_PORT=8000 -e WEBAPP_HOST=www.example.com
CMD:設置容器運行時默認運行的命令,CMD參數格式與RUN類似。CMD ls -l -a 或CMD ["ls", "-l", "-a"]
ENTRYPOIN:與CMD類似,指定容器運行時默認命令。ENTRYPOINT和CMD的區別,在于運行容器時,鏡像后的命令參數,ENTRYPOINT是拼接,CMD是覆蓋
USER:為容器的運行和RUN CMD ENTRYPOINT等指令的運行 指定用戶或者UID
ONBUILD:觸發器指令,父鏡像中不會執行,只有在子鏡像中才會執行。 給一個例子
關于如何搭建Dockerfile構建鏡像就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。