Dockerfile卷指令创建的卷类型是什么?

Dockerfile卷指令创建的卷类型是什么?,docker,dockerfile,Docker,Dockerfile,Docker使用较新的--mount参数创建卷。这里,key=value对指定卷选项。我对参数类型特别感兴趣 束缚 卷 tmpfs 当我使用Docker时,Docker创建了哪种类型(我如何指定它?) Dockerfile VOLUME /etc/nginx 我想看看docker volume ls /etc/nginx 然后我可以使用另一个带有--from volume的容器来访问它。我错过了什么 文档仅说明启动容器时必须指定装入点 主机目录在容器运行时声明:主机目录(挂载点)本质上依赖

Docker使用较新的
--mount
参数创建卷。这里,key=value对指定卷选项。我对参数
类型
特别感兴趣

  • 束缚
  • tmpfs
当我使用Docker时,Docker创建了哪种类型(我如何指定它?)

Dockerfile

VOLUME /etc/nginx
我想看看docker volume ls /etc/nginx

然后我可以使用另一个带有
--from volume
的容器来访问它。我错过了什么

文档仅说明启动容器时必须指定装入点

主机目录在容器运行时声明:主机目录(挂载点)本质上依赖于主机。这是为了保持映像的可移植性,因为不能保证给定的主机目录在所有主机上都可用。因此,无法从Dockerfile中装载主机目录。卷指令不支持指定主机目录参数。创建或运行容器时必须指定装入点

这个问题可以重新表述为:我如何与Dockerfile关联


(我完全了解Docker daemon manager拥有卷而不是使用绑定装载的好处。这是我的意图)

Dockerfile中的
指令创建绑定装载在容器中的匿名卷。有关更多信息,请参考文档:“除了名称之外,命名卷和匿名卷的行为方式相同”。例如:

FROM ubuntu:18.04

VOLUME ["/src"]
RUN mkdir /src && \ 
    touch /src/file.txt
构建映像:
docker Build--rm-tso:57703848。
并运行容器:
docker run--rm--name mycontainer-it--entrypoint cat-d so:57703848
(设置
cat
以保持容器在后台运行,仅用于示例目的)

现在,您可以使用
--volumes from
mycontainer
中的卷绑定到另一个容器中:
docker run--rm-it--volumes from mycontainer ubuntu:18.04


注意:“匿名卷第一次装入容器时没有给出明确的名称,因此Docker会给它们一个随机名称,保证在给定Docker主机中是唯一的。”-可能会出现
docker卷ls
,即:
CCB199AE1396C2B9D49AC58559C739BD40B2EF37AF50191FA3600AB6552FB20
(随机生成)。您可以在
运行
中将命名卷装载到匿名卷,即:
docker运行--rm--name mycontainer-v myvolume:/src--it--entrypoint cat-d so:57703848
--来自
的卷将工作相同,
docker volume ls
将输出
myvolume
Dockerfile
中的
volume
指令将创建绑定装入容器中的匿名卷。有关更多信息,请参考文档:“除了名称之外,命名卷和匿名卷的行为方式相同”。例如:

FROM ubuntu:18.04

VOLUME ["/src"]
RUN mkdir /src && \ 
    touch /src/file.txt
构建映像:
docker Build--rm-tso:57703848。
并运行容器:
docker run--rm--name mycontainer-it--entrypoint cat-d so:57703848
(设置
cat
以保持容器在后台运行,仅用于示例目的)

现在,您可以使用
--volumes from
mycontainer
中的卷绑定到另一个容器中:
docker run--rm-it--volumes from mycontainer ubuntu:18.04


注意:“匿名卷第一次装入容器时没有给出明确的名称,因此Docker会给它们一个随机名称,保证在给定Docker主机中是唯一的。”-可能会出现
docker卷ls
,即:
CCB199AE1396C2B9D49AC58559C739BD40B2EF37AF50191FA3600AB6552FB20
(随机生成)。您可以在
运行
中将命名卷装载到匿名卷,即:
docker运行--rm--name mycontainer-v myvolume:/src--it--entrypoint cat-d so:57703848
,来自的
卷将工作相同,
docker卷ls
将输出
myvolume
,这就是我所寻找的。我已经准备好开始阅读Go源代码了…很高兴我能提供帮助-编辑了一个关于命名匿名卷的注释。我希望Docker的文档能够如此精确。Docker通常有很好的文档。(不想对他们太苛刻)我倾向于同意,一开始我对一般的书很困惑。当我发现一天结束时,“docker卷”只不过是在/var/lib/docker/volumes中创建的目录,它们是绑定装载的,就像使用-v标志一样,事情真的开始发生了。顺便说一句,您可能希望在运行后将卷指令移动到。我认为VOLUME正在创建路径,如果它不存在,
mkdir
正在尝试再次创建它。这就是我正在寻找的。我已经准备好开始阅读Go源代码了…很高兴我能提供帮助-编辑了一个关于命名匿名卷的注释。我希望Docker的文档能够如此精确。Docker通常有很好的文档。(不想对他们太苛刻)我倾向于同意,一开始我对一般的书很困惑。当我发现一天结束时,“docker卷”只不过是在/var/lib/docker/volumes中创建的目录,它们是绑定装载的,就像使用-v标志一样,事情真的开始发生了。顺便说一句,您可能希望在运行后将卷指令移动到。我认为VOLUME正在创建路径,如果它不存在,
mkdir
正在尝试再次创建它。