master
bicijinlian 3 years ago
parent a7a8d81a84
commit a74d90a5a6

@ -0,0 +1,15 @@
# 注释: VOLUME 数据卷
FROM busybox
VOLUME ["/App/Datas","/App/Logs"]
WORKDIR /App/Datas
RUN /bin/sh -c 'echo Dockerfile设置VOLUME > demo.data'
WORKDIR /App/Logs
RUN /bin/sh -c 'echo 我是日志内容 > demo.log'
WORKDIR /App
# docker build -f Dockerfile.VOLUME -t study.dockerfile.volume:latest -t study.dockerfile.volume:0.0.1 .
# docker run --rm -it study.dockerfile.volume
# 查看VOLUEM 方法一docker inspect container_id 方法二docker voluem ls
# 可以使用 Docker run -v 覆盖
# docker run --rm -it -v D:\Docker\Share\dockerfile\Data1:/App/Datas study.dockerfile.volume

@ -0,0 +1,11 @@
# Deckerfile 工作目录
FROM busybox
ENV BaseWorkPath=/App/
WORKDIR $BaseWorkPath
WORKDIR website/
WORKDIR WebApi/
RUN pwd
# docker build -f Dockerfile.WORKDIR -t study.dockerfile.workdir:latest -t study.dockerfile.workdir:0.0.1 .
# docker run --rm -it study.dockerfile.workdir
# 输出 /App/website/WebApi

@ -440,9 +440,33 @@ docker run -p 80:80/tcp -p 80:80/udp ...
> RUN pwd > RUN pwd
> ``` > ```
+ VALUE 数据卷 + VOLUME 数据卷
> 语法:
>
> ```dockerfile
> VOLUME ["/data","/data2",....]
> #或者
> VOLUME /DATA
> ```
>
> Docker数据卷有两个常用使用方法
>
> `docker run -v``dockerfile VOLUME 指令`
>
> 1、前者比后者功能丰富、用法灵活可指定具名卷或匿名卷在启动容器时使用只能用于启动的容器自身。后者只能指定匿名卷在Dockerfile文件中指定作用于镜像生成时对镜像的所容器均有效是镜像的统一行为。
>
> 2、 VOLUME指令只是起到了声明了容器中的目录作为匿名卷在镜像架构层指定哪些数据要运用卷技术持久化到容器外但是并没有将匿名卷绑定到宿主机指定目录的功能具体的绑定 延迟到 容器启动时。<mark>注意</mark>对于Windows系统上的Docker for Desktop而言 匿名卷绑定的宿主目录并不在直接的Windows系统上而是在Docker守护服务系统上Hyper-V形式的在DockerDesktopVM虚拟机中WSL形式的在WLS子系统文件中。
>
> 3、两者的数据卷一样容器被删除以后映射在主机上的文件不会被删除数据持久
>
> 4、如果两者指定了同一个卷以前者(-v)为准。可以认为dockerfile从镜像架构层指定了那些目录数据要使用数据卷技术持久化并提供了一个匿名的默认自动(Docker引擎自动)实现;而在启动容器时,可以使用 -v 参数 覆盖默认实现,并且不指定-v参数时使用默认实现也不出错误。
>
> 5、共享数据卷docker run --volumes-from xxxx xxxx可以是同一镜像也可以是其它镜像或容器。使用数据卷容器设置数据其它容器统一使用--volumes-from 引用数据卷。
>
> 6、可以作用 docker volume 命令统一管理。
> value
+ ARG 构建时变量 + ARG 构建时变量

Loading…
Cancel
Save