1.基础语法

  • FROM:基于哪个镜像。
  • MAINTAINER:注明作者。
  • COPY:复制文件进入镜像(只能用相对路径,不能用绝对路径)。
  • ADD:复制文件进入镜像(假如文件是.tar.gz文件会解压,解压后删除)。
  • WORKDIR:指定工作目录,假如路径不存在会创建路径。
  • ENV:设置环境变量。
  • EXPOSE:暴露容器端口。
  • RUN
    • 在构建镜像的时候执行
    • 作用于镜像层面。
  • ENTRYPOINT
    • 在容器启动的时候执行
    • 作用于容器层。
    • dockerfile里有多条时只允许执行最后一条。
  • CMD
    • 在容器启动的时候执行
    • 作用于容器层。
    • dockerfile里有多条时只允许执行最后一条
    • 容器启动后执行默认的命令或者参数,允许被修改。

2.执行命令格式

两种方式效果一样。

  • shell命令格式:RUN yum install -y net-tools
  • exec命令格式:RUN ["yum","install" ,"-y" ,"net-tools"]

3.案例

  • RUN在构建镜像时执行。
  • CMD、ENTRYPOINT在启动容器时执行。
  • CMD、ENTRYOPINT只执行最后一条命令
  • 启动容器时:dcoker run mycentos:v6 aux,其中aux会覆盖CMD,而ENTRYOPINT不会被覆盖。
  • ENTRYOPINT在前、CMD在后。
    • CMD [“-ef”]
    • ENTRYPOINT [“ps”]
    • dcoker run mycentos:v6=>ps -ef
    • dcoker run mycentos:v6 aux=>ps aux
      1. #第一个
      2. FROM centos:7
      3. RUN echo "images building!"
      4. CMD ["echo","container","starting..."]
      5. ENTRYPOINT ["echo","container","starting !!!"]
      6. #第二个
      7. FROM centos:7
      8. RUN echo "images building!"
      9. CMD ["echo","containe1r","starting..."]
      10. CMD ["echo","container2","starting..."]
      11. ENTRYPOINT ["echo","container2","starting !!!"]
      12. ENTRYPOINT ["echo","container2","starting !!!"]
      13. #第三个
      14. FROM centos:7
      15. CMD ["-ef"]
      16. ENTRYPOINT ["ps"]