Docker --Dockerfile(製做鏡像)

Dockerfile

Dockerfile 是一個文本格式的配置文件,用戶能夠使用 Dockerfile 快速建立自定義的鏡像html

Dockerfile 經常使用指令

FROM

做用:指定基礎鏡像,Dockerfile中FROM是必備指令,且必須是第一條指令;
格式:FROM <image>:[tag]python

FROM busybox

LABEL

做用:設定元數據
格式:LABEL <key>=<vlaue> <key>=<value> ...
其中:LABEL指令將元數據以多個鍵值對方式指定mysql

LABEL auther="du"

COPY

做用:將工做目錄中的文件複製到所作得鏡像的文件系統中
格式:COPY <src><src>... <dest>nginx

COPY index.html  /usr/share/nginx/html/

其中:web

  • <src>必須用相對路徑,<dest>通常用絕對路徑
  • 源文件必須在工做目錄或工做目錄的子目錄(相對路徑能夠找到)
  • 支持通配符
  • <dest>能夠不存在,會自動建立
  • <src>是一個目錄,會自動複製目錄下的文件到目標位置,
  • 若是複製多個文件,或者<src>中使用了通配符,那麼<dest>必須以/結尾

ADD

格式: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 ./

WORKDIR

做用:至關於cd命令;指定工做目錄;能夠使用多個 WORKDIR 指令
格式:WORKDIR PSTHdocker

WORKDIR /pack/nginx/

VOLUME

做用:建立並指定數據卷掛載點
格式:VOLUME ["/data1","/data2"]vim

VOLUME  /webroom

EXPOSE

做用:設置Docker容器內部暴露的端口號
格式:EXPOSE port port ...centos

EXPOSE 22 80

ENV

做用:設置環境變量
格式:ENV var1=value1 var2=value2 ...app

ENV path=/usr/share/nginx/html/

ARG

做用:定義變量
格式:ARG key=value key=value
其中:ARG構建參數和 ENV 的效果同樣,都是設置環境變量。所不一樣的是, ARG 所設置的構建的環境變量,在未來容器運行時是不會存在這些環境變量的

RUN

做用:基於鏡像構建容器時運行命令
格式:RUN cmd && com

RUN touch testnginx

CMD

做用:定義容器啓動之後要默認運行的程序,pid爲1的程序
格式:CMD ["命令","參數","參數"]

CMD ["-g","daemon off;"]

其中:指定啓動容器時執行的命令,每一個 Dockerfile 只能有一條 CMD 命令。若是指定了多條 CMD 命令,只有最後一條會被執行。若是用戶在啓動容器時指定了要運行的命令,則會覆蓋掉 CMD 指定的命令。

ENTRYPOINT

做用:配置容器啓動後執行的命令和參數,相似CMD
區別:運行時CMD不能添加參數,而ENTRYPOINT能夠添加參數 eg:docker run DockerFile -i

http://www.javashuo.com/article/p-pstrjvyf-ct.html

USER

做用:指定運行容器時的用戶名和UID,
格式:USER username|uid

USER du

ONBUILD

做用:定義觸發器,當本鏡像被指定爲基礎鏡像時觸發
格式: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

相關文章
相關標籤/搜索