Docker Dockerfile(沒寫完)
阿新 • • 發佈:2022-03-01
Dockerfile是一個用來構建映象文字檔案,文字內容包含了一條條構建映象所需的指令和說明。
使用Dockerfile定製映象
定製一個nginx映象(構建好的映象內會有一個/user/share/nginx/html/index.html檔案)
在一個空的目錄下,新建一個名為Dockerfile檔案,並在檔案內新增以下內容:
FROM nginx
RUN echo '這是一個本地構建的nginx映象' > /user/share/nginx/html/index.html
引數分析:
- FROM:定製的映象都是基於FROM的映象,這裡的nginx就是定製需要的基礎映象。後續的操作都是基於nginx。
- RUN:用於執行後面跟著的命令列命令,有以下兩種格式:
shell格式:
RUN <命令列命令>
# <命令列命令> 等同於,在終端操作的shell命令
exec格式:
RUN ["可執行檔案", "引數1", "引數2"]
# 例如:
# RUN ["./test.php", "dev", "offline"] 等價於 RUN ./test.php dev offline
注意:Dockerfile的指令每執行一次都會在docker上新建一層,所以過多無意義的層會造成映象膨脹過大。例如:
FROM centos RUN yum -y 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
以上會建立三層映象,可簡化為以下格式:
FROM centos
RUN yum -y install wget
&& wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz"
&& tar -xvf redis.tar.gz
如上,以&&符號連線命令,這樣執行後,只會建立1層映象。
開始構建映象
在Dockerfile檔案的存放目錄下,執行構建動作。
以下例項,通過目錄下的Dockerfile構建一個nginx:v3(映象名稱:映象標籤)
docker build -t nginx:v3 .
注:最後的.
代表本次執行的上下文路徑。
上下文路徑
docker build -t nginx:v3 .
上下文路徑是指docker在構建映象,有時候想要使用到本機的檔案(比如複製),docker build 命令得知這個路徑後,會將路徑下的所有內容打包。
解析:由於docker的執行模式C/S。我們本機是C,docker引擎是S。實際的構建過程是在docker引擎下完成的,所以這個時候無法用到我們本機的檔案。這就需要把我們本機的指定目錄下的檔案一起提供給docker引擎使用。
指令詳解
COPY
複製指令,從上下文目錄中複製檔案或者目錄到容器裡指定路徑。
格式:
COPY [--chown=<user>:<group>] <源路徑>...<目標路徑>
[--chown=
例如:
COPY hom* /mydir/
COPY hom?.txt /mydir/