dockfile详解

Dockfile是一个用于编写docker镜像生成过程的文件,利用dockfile生成镜像语法格式为:

docker build --tag name:tag .

name是镜像的名称,tag是镜像的版本或者是标签号,不写就是lastest。注意后面有一个空格和点。

dockfile基本命令

1. FROM

FROM <image>

其指定一个构建镜像的基础源镜像;

2. MAINTAINER

MAINTAINER <name> <email>

描述镜像的创建者,名称和邮箱

3. RUN

RUN "command" "param1" "param2"

RUN命令是一个常用的命令,执行完成之后会成为一个新的镜像,这里也是指镜像的分层构建。

4. CMD

CMD command param1 param2

CMD在Dockerfile中只能出现一次,有多个,只有最后一个会有效。其作用是在启动容器的时候提供一个默认的命令项。如果用户执行docker run的时候提供了命令项,就会覆盖掉这个命令。没提供就会使用构建时的命令。

5. EXPOSE

EXPOSE <port> [<port>...]

告诉Docker服务器容器对外映射的容器端口号,在docker run -p的时候生效。

6. ENV

EVN <key> <value> 只能设置一个

EVN <key>=<value>允许一次设置多个

设置容器的环境变量,可以让其后面的RUN命令使用,容器运行的时候这个变量也会保留。

7. ADD

ADD <src>   <dest>

复制本机文件或目录或远程文件,添加到指定的容器目录,支持GO的正则模糊匹配。路径是绝对路径,不存在会自动创建。如果源是一个目录,只会复制目录下的内容,目录本身不会复制。ADD命令会将复制的压缩文件夹自动解压,这也是与COPY命令最大的不同。

8. COPY

COPY <src> <dest>

COPY除了不能自动解压,也不能复制网络文件。其它功能和ADD相同。

9. ENTRYPOINT

ENTRYPOINT "command" "param1" "param2"

这个命令和CMD命令一样,唯一的区别是不能被docker run命令的执行命令覆盖,如果要覆盖需要带上选项--entrypoint,如果有多个选项,只有最后一个会生效。

10. USER

USER daemon

指定运行容器时的用户名或UID,后续的RUN、CMD、ENTRYPOINT也会使用指定的用户运行命令。

例1 一个使用安装包安装的tomcat例子:

FROM centos

MAINTAINER nobody "xx@qq.com"

RUN mkdir -p /opt/jdk/

RUN mkdir -p /opt/tomcat/

ADD jdk1.7.0_79 /opt/jdk/

ADD tomcat  /opt/tomcat/

ENV CATALINA_HOME /opt/tomcat

ENV JAVA_HOME /opt/jdk

EXPOSE 8080

ENV PATH $PATH:$JAVA_HOME/bin

CMD ["/opt/tomcat/bin/catalina.sh","run"]

例2 Dockerfile之部署war到tomcat中

FROM tomcat:8.5
 
#维护者
MAINTAINER xx@mail.com
 
#将webapp下的全部删除
RUN rm -rf /usr/local/tomcat/webapps/*
 
#将target下的xx.war拷贝到/usr/local/tomcat/webapps/下
ADD ./target/xx.war /usr/local/tomcat/webapps/
 
#端口
EXPOSE 8080
 
#设置启动命令
ENTRYPOINT ["/usr/local/tomcat/bin/catalina.sh","run"]

 

CMD 、ENTRYPOINT和 RUN 的区别:

1. RUN命令适用于在 docker build 构建docker镜像时执行;
2. CMD命令是在 docker run 执行docker镜像构建容器时使用,多条CMD命令,则只会执行最后一条;
3. CMD命令的内容会被充当ENTRYPOINT命令的参数;
4. docker run后面的内容将Dockerfile中的最后一条CMD命令的参数内容覆盖;

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值