17-DockerFile常用指令

DockerFile常用指令

1. FROM关键字

​ 作为dockerfile的第一句,指定基础镜像。

FROM 镜像名:tag

2. MAINTAINER关键字(可选)

​ 描述镜像维护者的姓名和邮箱地址。

3. RUN关键字

​ 容器在build时执行的指令。(docker build)

  • shell格式(推荐)

RUN shell命令
  • exec格式

RUN ["可执行文件""参数1""参数2"]
# RUN ["./test.php","dev","offline"] 等价于 RUN ./test.php dev offline

4. EXPOSE关键字

​ 当前容器对外暴露的端口。

EXPOSE 端口号

5. WORKDIR

​ 创建容器后,终端默认登录进来的工作目录(落脚点)。

WORKDIR /myspace/tomcat

6. USER

​ 以什么样的用户去执行镜像,默认为root。

USER root

7. ENV

​ 作用于本dockerfile中的环境变量,构建后在后续指令中便于使用。

ENV CATALINE_HOME /usr/local/tomcat
WORKDIR $CATALINE_HOME

8. VOLUME

​ 指定容器数据卷。

```

#### 9. ADD

​ 将宿主机中的压缩包放到镜像对应目录下并解压。

```dockerfile

10. COPY

​ 将宿主机中的文件或目录拷贝到镜像中。

COPY src dest
#src 源文件或目录
#dest 容器中的指定路径,不存在时自动创建

11. CMD

​ 容器启动后执行的指令。只会执行最后一条CMD指令。

CMD cataline.sh run

​ 注意:会被docker run后的参数覆盖。如果docker run... /bin/bash则会不执行CMD后的指令。

12. ENRTRYPOINT

​ 同样时容器启动后执行的指令,但不会被docker run后的命令覆盖。

​ 另外,如果后面跟CMD,将会把CMD中的参数作为默认参数传递给当前命令,如果有传参,则会覆盖该参数。

案例

FROM ubuntu
COPY myscript.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/myscript.sh
ENTRYPOINT ["myscript.sh"]
CMD ["arg1", "arg2"]
是否传参 传参执行
默认命令 myscript.sh arg1 arg2
Docker命令传参 docker run myimage arg3 arg4
实际命令 myscript.sh arg3 arg4