FROM:指定基础镜像,例如 FROM Ubuntu:18.04
RUN:执行命令,在dockerfile中,他每次执行RUN命令都会分层。镜像会分层。这会造成镜像臃肿,因此常用&&来一次执行多次命令。
COPY:他会从宿主机复制文件到镜像中。例如COPY app.py /app/
这个命令就会将app.py复制到镜像的app目录下,当然,这个目录你可以自己指定
ADD:类似于COPY,但是他支持URL(包括其他位置和网络部分)和自动解压
WORKDIR:指定工作目录,如:workdir:/app,如果没有指定的话,他就会默认在这个目录下执行。
EXPOSE:暴露端口,比如EXPOSE 80他会映射端口到宿主机的某个端口
CMD:设置默认命令,他启动时会启动的命令。注意:(如果写了多个CMD他也只会执行最后一条CMD命令)如[“python”,”app.py”]
ENTERPOINT:容器启动时执行的命令,如[“python”,”app.py”].
而且如果在容器中,同时又ENTERPOINT和CMD,那么他将会执行ENTERPOINT,CMD将会作为参数传给ENTERPOINT。比如他会拿到ENTERPOINT的python命令,和CMD的app.py参数
ENV:设置环境变量,如ENV MYSQL_ROOT_PASSWORD=your_password
ARG:添加一个环境变量,如 ARG VERSION=latest
VOLUME:声明数据卷,如:VOLUME /var/lib/mysql
他会映射到容器外的某个目录。如果没声明他会默认挂载到一个默认目录。
USER:指定运行用户