CMD和ENTRYPOINT
    1. 相同点:

    • 只能写一条,如果写了多条,那么只有最后一条生效
    • 容器启动时才运行,运行时机相同
    1. 不同点:
    • ENTRYPOINT不会被运行的command覆盖,而CMD则会被覆盖
    • 如果我们在Dockerfile种同时写了ENTRYPOINT和CMD,并且CMD指令不是一个完整的可执行命令,那么CMD指定的内容将会作为ENTRYPOINT的参数

    (1)FROM
    基础镜像,必须是可以下载下来的,定制的镜像都是基于 FROM 的镜像,这里的 centos 就是定制需要的
    基础镜像。后续的操作都是基于 centos 镜像。
    (2)MAINTAINER
    指定镜像的作者信息
    (3)RUN:指定在当前镜像构建过程中要运行的命令
    包含两种模式
    1、Shell
    RUN (shell 模式,这个是最常用的,需要记住)
    RUN echo hello
    2、exec 模式
    RUN “executable”,“param1”,“param2”
    RUN [“/bin/bash”,”-c”,”echo hello”]
    等价于/bin/bash -c echo hello

    (4)EXPOSE 指令
    仅仅只是声明端口。
    作用:
    1、帮助镜像使用者理解这个镜像服务的守护端口,以方便配置映射。
    2、在运行时使用随机端口映射时,也就是 docker run -P 时,会自动随机映射 EXPOSE 的端口。
    3、可以是一个或者多个端口,也可以指定多个 EXPOSE
    格式:EXPOSE <端口 1> [<端口 2>…]

    (5)CMD
    类似于 RUN 指令,用于运行程序,但二者运行的时间点不同:
    1、CMD 在 docker run 时运行。
    2、RUN 是在 docker build 构建镜像时运行的
    作用:为启动的容器指定默认要运行的程序,程序运行结束,容器也就结束。CMD 指令指定的程序可被
    docker run 命令行参数中指定要运行的程序所覆盖。

    CMD[“executable”,“param1”,“param2”](exec 模式)
    CMD command (shell 模式)
    CMD “param1”,”param2”
    例:cd /root/dockerfile/test
    cat dockerfile
    #first dockerfile
    FROM centos
    MAINTAINER xianchao
    RUN yum clean all
    RUN yum install nginx -y
    EXPOSE 80
    CMD [“/usr/sbin/nginx”,”-g”,”daemon off;”]
    构建镜像:
    docker build -t=”dockerfile/test-cmd:v1” .