dockerfile深入学习之VOLUME以USER

VOLUME:挂载卷、通过指定的名称创建一个挂载点,将其标记为本地主机或者其它容器进行挂载的卷

语法形式: VOLUME ["/data"]

data可以是一个JSON数组或者多个纯字符串 

  • VOLUME ["/var/log/"]
  • VOLUME /var/log
  • VOLUME /var/log /var/db

docker run 命令使用基础镜像中指定位置存在的任何数据初始化新创建的卷 

实例:

  • FROM ubuntu
  • RUN mkdir /myvol
  • RUN echo "hello world" > /myvol/greeting
  • VOLUME /myvol

以上实例的作用是生成一个镜像、docker run在/myvol下创建一个新的挂载点并将greetint文件拷贝到新创建的挂载点下

NOTE:

  1. 如果是以windows系统为基础的容器、容器中的目标路径必须是以下两种之一
    1. 一个不存在的目录或者空目录
    2. 只能是C盘之外的硬盘空间
  2. 从Dockerfile中更改VOLUME:如果任何构建步骤在声明后更改了VOLUME内的数据,那么这些更改将被丢弃
  3. 如果参数是JSON数组形式、必须使用双引号
  4. 主机目录(挂载点)在容器运行期间创建:主机目录(挂载点)本质上是与主机相关的。 而我们无法保证给定的主机目录在所有主机上都可用,因此为了保持镜像的可移植性,我们不能从Dockerfile中挂载主机目录。 所以VOLUME指令不支持指定host-dir参数。 只能在创建或运行容器时指定挂载点

USER:设置镜像运行以及在执行dockerfile中的RUN/CMD/ENTRYPOINT命令时的用户名和组

posted on 2018-01-19 09:32  残天  阅读(1474)  评论(0)    收藏  举报

导航