Dockerfile 是一個文本格式的配置文件,用戶能夠使用 Dockerfile 快速建立自定義的鏡像html
做用:指定基礎鏡像,Dockerfile中FROM是必備指令,且必須是第一條指令;
格式:FROM <image>:[tag]python
FROM busybox
做用:設定元數據
格式:LABEL <key>=<vlaue> <key>=<value> ...
其中:LABEL指令將元數據以多個鍵值對方式指定mysql
LABEL auther="du"
做用:將工做目錄中的文件複製到所作得鏡像的文件系統中
格式:COPY <src><src>... <dest>nginx
COPY index.html /usr/share/nginx/html/
其中:web
- <src>必須用相對路徑,<dest>通常用絕對路徑
- 源文件必須在工做目錄或工做目錄的子目錄(相對路徑能夠找到)
- 支持通配符
- <dest>能夠不存在,會自動建立
- <src>是一個目錄,會自動複製目錄下的文件到目標位置,
- 若是複製多個文件,或者<src>中使用了通配符,那麼<dest>必須以/結尾
格式:ADD <src><src>... <dest>
做用:複製指定的 <src> 到容器中的 <dest>
其中: <src> 能夠是 Dockerfile 所在目錄的一個相對路徑(文件或目錄);也能夠是一個 URL;還能夠是一個 tar 文件(自動解壓)sql
ADD https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/at-sysvinit-3.1.13-24.el7.x86_64.rpm ./
做用:至關於cd命令;指定工做目錄;能夠使用多個 WORKDIR 指令
格式:WORKDIR PSTHdocker
WORKDIR /pack/nginx/
做用:建立並指定數據卷掛載點
格式:VOLUME ["/data1","/data2"]vim
VOLUME /webroom
做用:設置Docker容器內部暴露的端口號
格式:EXPOSE port port ...centos
EXPOSE 22 80
做用:設置環境變量
格式:ENV var1=value1 var2=value2 ...app
ENV path=/usr/share/nginx/html/
做用:定義變量
格式:ARG key=value key=value
其中:ARG構建參數和 ENV 的效果同樣,都是設置環境變量。所不一樣的是, ARG 所設置的構建的環境變量,在未來容器運行時是不會存在這些環境變量的
做用:基於鏡像構建容器時運行命令
格式:RUN cmd && com
RUN touch testnginx
做用:定義容器啓動之後要默認運行的程序,pid爲1的程序
格式:CMD ["命令","參數","參數"]
CMD ["-g","daemon off;"]
其中:指定啓動容器時執行的命令,每一個 Dockerfile 只能有一條 CMD 命令。若是指定了多條 CMD 命令,只有最後一條會被執行。若是用戶在啓動容器時指定了要運行的命令,則會覆蓋掉 CMD 指定的命令。
做用:配置容器啓動後執行的命令和參數,相似CMD
區別:運行時CMD不能添加參數,而ENTRYPOINT能夠添加參數 eg:docker run DockerFile -i
http://www.javashuo.com/article/p-pstrjvyf-ct.html
做用:指定運行容器時的用戶名和UID,
格式:USER username|uid
USER du
做用:定義觸發器,當本鏡像被指定爲基礎鏡像時觸發
格式:ONBUILD cmd
... ONBUILD ADD . /app/src ONBUILD RUN /usr/local/bin/python-build –dir /app/src ...
第一步:編寫dockerfile
╭─root@du-z ~ ╰─➤ mkdir /nginx ╭─root@du-z ~ ╰─➤ cd /nginx ╭─root@du-z /nginx ╰─➤ vim Dockerfile FROM docker.io/nginx:latest LABEL author=du COPY ./passwd /data/ WORKDIR /pack/nginx/ ENV pkgname=nginx-1.14.0.tar.gz root=/data/mysql/mysql3306/data/ COPY nginx-1.14.0.tar.gz $root VOLUME $root EXPOSE 80/tcp RUN tar xf $root$pkgname CMD nginx -g "daemon off;"
第二步:構建鏡像
╭─root@du-z /nginx ╰─➤ docker build -t nginx:v1 .
第三步:查看
# docker image ls # docker history nginx:v1