diff --git a/Build/Dockerfile.VOLUME b/Build/Dockerfile.VOLUME new file mode 100644 index 0000000..237a456 --- /dev/null +++ b/Build/Dockerfile.VOLUME @@ -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 \ No newline at end of file diff --git a/Build/Dockerfile.WORKDIR b/Build/Dockerfile.WORKDIR new file mode 100644 index 0000000..767d4f0 --- /dev/null +++ b/Build/Dockerfile.WORKDIR @@ -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 diff --git a/Build/学习.md b/Build/学习.md index 68fc8e6..fae0c2a 100644 --- a/Build/学习.md +++ b/Build/学习.md @@ -440,9 +440,33 @@ docker run -p 80:80/tcp -p 80:80/udp ... > RUN pwd > ``` -+ VALUE 数据卷 ++ VOLUME 数据卷 - > value + > 语法: + > + > ```dockerfile + > VOLUME ["/data","/data2",....] + > #或者 + > VOLUME /DATA + > ``` + > + > Docker数据卷有两个常用使用方法: + > + > `docker run -v` 和 `dockerfile VOLUME 指令` + > + > 1、前者比后者功能丰富、用法灵活,可指定具名卷或匿名卷;在启动容器时,使用,只能用于启动的容器自身。后者只能指定匿名卷;在Dockerfile文件中指定,作用于镜像生成时;对镜像的所容器均有效,是镜像的统一行为。 + > + > 2、 VOLUME指令,只是起到了声明了容器中的目录作为匿名卷(在镜像架构层指定哪些数据要运用卷技术持久化到容器外),但是并没有将匿名卷绑定到宿主机指定目录的功能;具体的绑定 延迟到 容器启动时。注意:对于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 命令统一管理。 + + + ARG 构建时变量