FROM:指定基礎鏡像,比如你要創建一個springboot項目的鏡像,那麼就需要jre作爲基礎鏡像;
查找需要的基礎鏡像的方法:docker serch xxxx 或者去docker hub上查找;
RUN:構建容器運行的命令,格式有兩種:
1)RUN ['execuable','param1','param2']
2)RUN <command>
CMD:容器啓動時要執行的命令
CMD["SH","-c","echo $HOME"]
CMD command param1 parma2
第一中格式的命令,參數都用雙引號
MAINTAINR:指定作者,就是這個dockerfile是誰編寫的;
EXPOSE:暴露容器運行時的監聽端口給外部;
ENV:設置環境變量 ;
語法有兩種:ENV <key> ..<value> 只能設置一個值
ENV <key>=<value>..... 可以設置多個值
ADD:一個複製命令,把文件複製到鏡像中:
命令格式: ADD <src> <src>
ADD ["<src>",...."<dest>"]
<dest>路徑的填寫可以是容器內的絕對路徑,也可以是相對於工作的目錄的相對路徑
<src> 可以是一個本地的文件或者壓縮包,還可以是一個url
COPY: COPY與ADD一致,唯一的區別就是<src>只能是本地的文件
ENTRYPOINT:與CMD命令很像,都是在容器啓動時執行命令,但是與CMD還是有一些區別:
相同點:
只能寫一條,如果寫了多條,那麼只有最後一條生效
啓動容器才執行
不同點:
ENTRYPOINT不會被Command覆蓋,CMD會被覆蓋;
但是如果docker run 的-entrypoint會覆蓋ENTRYPOINT命令
任何docker run 設置的命令參數或CMD指令命令,都將作爲ENTRYPOINT指令的命令參數,追加到ENTRYPOINT指令的命令之後
例如:
ENTRYPOINT ["top","-b", "-H"]
在執行docker run <container-name> -v 啓動容器則容器執行的命令就是 top -b -v
VOLUME:掛載目錄;
將本地文件夾或者其他容器的文件夾掛載到當前容器下
語法: volume ["/data"]
使用場景一般是需要持久化數據,比如數據庫;
WORKDIR:設置工作目錄;
WORKDIR /path/dir