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 -efdcoker run mycentos:v6 aux=>ps aux#第一个FROM centos:7RUN echo "images building!"CMD ["echo","container","starting..."]ENTRYPOINT ["echo","container","starting !!!"]#第二个FROM centos:7RUN echo "images building!"CMD ["echo","containe1r","starting..."]CMD ["echo","container2","starting..."]ENTRYPOINT ["echo","container2","starting !!!"]ENTRYPOINT ["echo","container2","starting !!!"]#第三个FROM centos:7CMD ["-ef"]ENTRYPOINT ["ps"]
