一、Dockerfile指令詳解
眾所周知,Dockerfile文件是利用基礎(chǔ)鏡像來構(gòu)建新的鏡像的,這篇博客只記錄博主一些遇到過的問題和一些自己的理解(會持續(xù)更新...);需要了解Dockerfile的每個指令的話,可自行g(shù)oogle一下,多的是,估計(jì)都是抄的。
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),烈山企業(yè)網(wǎng)站建設(shè),烈山品牌網(wǎng)站建設(shè),網(wǎng)站定制,烈山網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,烈山網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
2.RUN指令和CMD,ENTRYPOINT指令區(qū)別
查了下網(wǎng)上寫的,大部分都說RUN是docker build命令執(zhí)行時(shí)運(yùn)行的指令,而CMD,ENTRYPOINT是docker run命令執(zhí)行時(shí)運(yùn)行的指令,不僅很繞,而且抽象不好理解;在這里給兩個不同Dockerfile文件實(shí)例,來更具體理解這幾個指令區(qū)別:
1)RUN指令的Dockerfile文件.
#version 1.0.0.1
FROM nginx
MAINTAINER XXXXXX@163.COM
RUN apt-get update
RUN apt-get install openssh-server
EXPOSE 22
像上面這種帶有RUN指令的Dockerfile文件,在構(gòu)建鏡像時(shí),cd進(jìn)入到Dockerfile文件所在路徑,使用docker build命令:docker build -t="new_nginx:new_latest" .
new_nginx:新鏡像名
new_latest:新鏡像版本
最后點(diǎn)號.
表示在當(dāng)前目錄下尋找Dockerfile文件
這就解釋了,RUN指令是在執(zhí)行docker build過程中被運(yùn)行;
二、Dockerfile構(gòu)建新鏡像問題
1.構(gòu)建時(shí)的上下文問題
在官方文檔中,經(jīng)常出現(xiàn)的一個術(shù)語叫做構(gòu)建上下文,所謂上下文就是指構(gòu)建所依賴環(huán)境;比如說,Dockerfile所在目錄就是一種上下文,用Dockerfile構(gòu)建新鏡像時(shí),會用到一些文件或者腳本,這些文件或腳本必須和Dockerfile文件在同一目錄;
編碼開發(fā)過程中也有上下文的概念,其含義上某些代碼運(yùn)行時(shí)需要的變量、函數(shù)等;這兩個上下文的概念大體上含義是相同的——就是構(gòu)建或運(yùn)行時(shí),所依賴的其他東西;
https://www.jianshu.com/p/5f79b573c2fb