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

相关文章
相关标签/搜索