docker入门(10)

93 阅读2分钟

本文已参加 [新人创作礼] 活动,一起开启掘金创作之旅。

本篇继续介绍在面试中常遇见的docker类型的面试题。

我们怎么使用docker部署自己的应用

  • 可以使用dockerfile把自己的项目构建成一个docker镜像,这样我们就可以使用docker部署了。
    1. docker从基础镜像运行一个容器

    2. 执行一条指令并对容器作出修改

    3. 执行类似docker commit的操作提交一个新的镜像层

    4. docker再基于刚提交的镜像运行一个新容器

    5. 执行dockerfile中的下一条指令直到所有指令都执行完成

dockerfile 中 RUN 指令 和 CMD 指令的区别是什么?

  • RUN

    1. 将在当前镜像之上的新层中执行命令,在 docker build时运行。
    2. 可以使用 \(反斜杠)将单个 RUN 指令延续到下一行RUN 在下一次构建期间,指令缓存不会自动失效。可以使用 --no-cache 标志使指令缓存无效Dockerfile 的指令每执行一次都会在 Docker 上新建一层。所以过多无意义的层,会造成镜像膨胀过大,可以使用 && 符号连接命令,这样执行后,只会创建 1 层镜像
  • CMD

    1. 运行程序,在 docker run 时运行,但是和 run 命令不同,RUN 是在 docker build 时运行。

    2. 指定启动容器时执行的命令,每个 Dockerfile 只能有一条 CMD 命令。如果指定了多条命令,只有最后一条会被执行。如果用户启动容器时候指定了运行的命令,则会覆盖掉 CMD 指定的命令。

dockerfile 中 ENV 指令 和 ARG 指令的区别是什么?请概述!

  • ENV

    1. 设置的环境变量将持续存在,您可以使用 docker inspect 来查看
    2. 如果环境变量只在构建期间需要,请考虑为单个命令设置一个值
  • ARG

    1. 定义变量,与 ENV 作用相同,不过 ARG 变量不会像 ENV 变量那样持久化到构建好的镜像中。
    2. Docker 有一组预定义的 ARG 变量,可以在 Dockerfile 中没有相应指令的情况下使用这些变量。
    3. 要使用这些,请使用 --build-arg 标志在命令行上传递它们。