本文章來自【知識林】
使用Dockerfile
來創(chuàng)建Docker鏡像時需要用到一些指令嚼松,如:FROM
、RUN
袜炕、MAINTAINER
本谜、WORKDIR
、ADD
偎窘、CMD
乌助、ENTRYPOINT
溜在、ENV
、EXPOSE
等等他托,上面列舉的指令都是比較常用的掖肋,需要注意的是這些指令都必須是大寫且放在行的開頭。
FROM
:指定基礎鏡像上祈,一般我們在創(chuàng)建鏡像是都是以另一個鏡像為基礎培遵,就需要用FROM
來指定,FROM
一般放在Dockerfile
的文件頭登刺,如:FROM java:8
籽腕;
MAINTAINER
:指定創(chuàng)建鏡像的作者,如:MAINTAINER zslin.com "393156105@qq.com"
纸俭;
RUN
:執(zhí)行命令皇耗,如:RUN mkdir -p /web/
(創(chuàng)建一個名為web的文件夾);
WORKDIR
:指定當前工作目錄揍很,如:WORKDIR /web
(設置當前工作目錄為web郎楼,可以通過RUN pwd
查看);
ADD
:添加文件(夾)窒悔,如:ADD zslin-1.0.jar /app.jar
(復制并重命名)呜袁;
CMD
:執(zhí)行命令,如:CMD ["ls", "-l"]
(列表)简珠;
ENTRYPOINT
:執(zhí)行命令阶界,如:ENTRYPOINT ["bin/catalina.sh", "run"]
(啟動tomcat);
ENV
:配置環(huán)境變量聋庵,如:ENV CATALINA_HOME /web/tomcat8
(配置tomcat目錄)膘融;
EXPOSE
:指定端口,如:EXPOSE 8080
祭玉。
從上面的描述可以看出:RUN
氧映、CMD
、ENTRYPOINT
三者都是用于執(zhí)行命令脱货,那么這三者之間有何異同呢:
相同之處:三者都是用來運行指令的岛都;
RUN
:是在構建鏡像是執(zhí)行的,在Dockerfile
中可以有多條蹭劈,即使用docker build
時執(zhí)行疗绣;
RUN
的示例:
RUN cd /web/
RUN rm -rf *.*
說明:在鏡像構建時進入到/web/
目錄,再刪除該目錄下的所有文件(相應命令直接跟在其后)铺韧。
CMD
和ENTRYPOINT
則是在容器運行是執(zhí)行多矮,在Dockerfile
中只能有一條,如果多條只生效最后一條,即使用docker run
時執(zhí)行塔逃;
CMD
:可以在容器運行時(即docker run
)加參數(shù)覆蓋讯壶;
CMD
的示例:
CMD ["rm", "-rf", "*.*"]
說明:CMD后面的命令如果沒有任何參數(shù)可以直接跟上(如:RUN ls
),但如果有參數(shù)就不能直接跟上湾盗,須要以數(shù)組形式出現(xiàn)伏蚊;
ENTRYPOINT
:在容器運行時(即docker run
)不可以被覆蓋。
本文章來自【知識林】