我正在努力深入了解Docker的数量,并且我很难弄清楚差异/用例:
docker volume create
命令docker run -v /path:/host_path
VOLUME
条目Dockerfile
我特别不明白如果将VOLUME
条目与-v
标志组合起来会发生什么.
如果有人理解得很好,请解释我!
Von*_*onC 56
卷是存储在其中的持久数据 /var/lib/docker/volumes/...
您可以在Dockerfile中声明它,这意味着每次从映像启动容器时,即使您没有任何选项,也会创建卷(空)-v
.
您可以在运行时声明它docker run -v [host-dir:]container-dir
.
将两者(VOLUME
+ docker run -v
)组合在一起意味着您可以将主机文件夹的内容装入容器中持久存储的卷中/var/lib/docker/volumes/...
docker volume create创建一个卷,而无需定义Dockerfile并构建映像并运行容器.它用于快速允许其他容器安装所述容积.
如果您在卷中保留了一些内容,但从那时起删除了容器(默认情况下不会删除其关联的卷,除非您使用的是docker rm -v),您可以将所述卷重新附加到新容器(声明相同的数量).
请参阅" Docker - 如何访问未附加到容器的卷? ".
使用docker volume create,可以轻松地将命名卷重新连接到容器.
docker volume create --name aname
docker run -v aname:/apath --name acontainer
...
# modify data in /apath
...
docker rm acontainer
# let's mount aname volume again
docker run -v aname:/apath --name acontainer
ls /apath
# you find your data back!
Run Code Online (Sandbox Code Playgroud)
Kor*_*gay 15
VOLUME
当您将指令与volumes-from
运行时参数结合使用时,指令会变得有趣。
给定以下 Dockerfile:
FROM busybox
VOLUME /myvolume
Run Code Online (Sandbox Code Playgroud)
使用以下命令构建图像:
FROM busybox
VOLUME /myvolume
Run Code Online (Sandbox Code Playgroud)
并旋转一个容器:
docker run --rm -it --name my-first-bb my-bb
Run Code Online (Sandbox Code Playgroud)
首先要注意的是,您将在此图像中拥有一个名为myvolume
. 但这并不是特别有趣,因为当我们退出容器时,卷也将被删除。
在此文件夹中创建一个空文件,因此在容器中运行以下命令:
cd myvolume
touch hello.txt
Run Code Online (Sandbox Code Playgroud)
现在启动一个新容器,但与my-first-bb
以下内容共享相同的卷:
docker run --rm -it --volumes-from my-first-bb --name my-second-bb my-bb
Run Code Online (Sandbox Code Playgroud)
您将看到my-second-bb
包含文件hello.txt
的myvolume
文件夹。
退出两个容器后,您的卷也将被删除。
-v
在docker run
命令行中指定,上述情况仍然成立。只是卷名变成了匿名。但仍然有方法可以访问或恢复此类匿名卷中的数据。 归档时间: |
|
查看次数: |
26897 次 |
最近记录: |