dockerfile講解
-
FROM
FROM scratch 製作base image
FROM centos 使用base image
FROM ubuntu:14.04 使用base image -
LABEL
maintainer 維護者
descripe 描述 -
RUN 執行命令並創建新的image layer,(構建image時用來執行命令)
RUN shell命令 儘量多個命令合併爲一 這樣可以少創建image的layer -
WORKDIR /test 類似設置家目錄 如果沒有會自動創建test目錄
-
ADD 和 COPY
add hello /
add test.tar.gz / 添加到根目錄並解壓縮
添加本地文件用add和copy 添加遠程文件用curl和wget
-
ENV #設置常量
ENV MYSOL_VERSION 5.6
RUN apt-get install -y mysql-server="${MYSOL_VERSION}"
&& rm -rf /var/lib/apt/list/* #引用常量 -
VOLUME 和 EXPOSE
-
CMD 和 ENTRYPOINT
CMD
設置容器啓動後默認執行的命令和參數。
如果docker run指定了其他命令,CMD命令被忽略。
如果定義了多個CMD,只有最後一個會執行。
ENTRYPOINT
設置容器啓動時運行的命令
讓容器以應用程序或者服務的形式運行
不會被忽略,一定會執行
最佳實踐:寫一個shell腳本作爲entrypoint。 ENTRYPOINT [“a.sh”] -
shell和exec格式
shell格式
RUN apt-get install -y vim
CMD echo “hello docker”
ENTRYPOINT echo “hello docker”
exec格式
RUN [“apt-get”, “install”, “-y”, “vim”]
CMD ["/bin/echo", “hello docker”]
ENTRYPOINT ["/bin/echo", “hello docker”]