sam*_*rog 54
对于持久数据,我们基本上有3种类型的卷或挂载:
绑定坐骑
命名卷
dockerfiles中的卷
绑定基本上只是从容器内的主机绑定某个目录或文件(docker run -v /hostdir:/containerdir IMAGE_NAME
)
命名卷是您手动创建的卷docker volume create VOLUME_NAME
.它们是在其中创建的,/var/lib/docker/volumes
并且只能通过其名称引用.假设您创建了一个名为"mysql_data"的卷,您可以像这样引用它docker run -v mysql_data:/containerdir IMAGE_NAME
.
然后是dockerfiles中的卷,这些卷由VOLUME
指令创建.这些卷也是在下面创建的,/var/lib/docker/volumes
但没有特定的名称.他们的"名字"只是某种哈希.无论是否启动容器,都会在运行容器时创建卷,并且可以方便地保存持久数据-v
.开发人员可以说出重要数据的位置和持久性.
我该怎么用?
您想要使用的内容主要取决于您的偏好或管理层.如果要将所有内容保存在"docker area"(/var/lib/docker
)中,可以使用卷.如果要保留自己的目录结构,可以使用绑定.
Docker建议使用卷而不是使用绑定,因为由docker创建和管理卷,并且绑定具有更多的失败可能性(也是由于第8层问题).
如果您使用绑定并希望在另一台主机上传输容器/应用程序,则必须重建目录结构,其中每个主机上的卷更加统一.
Ati*_*nar 12
绑定安装就像卷的超集(命名或未命名)。绑定挂载是通过将主机系统(主机系统是本机 Linux 计算机或虚拟机(在 Windows 或 Mac 中))中的现有文件夹绑定到容器中的路径来创建的。
Volume 命令会生成一个新文件夹,该文件夹在主机系统的 /var/lib/docker 下创建
建议使用卷,因为它们由 docker 引擎(prune、rm 等)管理。
绑定安装的一个很好的用例是将开发文件夹链接到容器中的路径。主机文件夹中的任何更改都将反映在容器中。绑定挂载的另一个用例是保存应用程序日志,这不像数据库那样重要。
这两种情况的命令语法几乎相同:
绑定挂载:注意主机路径应以“/”开头。为了方便起见,请使用 $(pwd)。
docker container run -v /host-path:/container-path image-name
Run Code Online (Sandbox Code Playgroud)
未命名卷:在主机中创建一个具有任意名称的文件夹
docker container run -v /container-path image-name
Run Code Online (Sandbox Code Playgroud)
命名卷:不应以“/”开头,因为这是为绑定安装保留的。“卷名称”在这里不是完整路径。该命令将导致在主机中创建一个路径为“/var/lib/docker/volumes/volume-name”的文件夹。
docker container run -v volume-name:/container-path image-name
Run Code Online (Sandbox Code Playgroud)
还可以在运行容器之前创建命名卷(docker volume create)。但这几乎从不需要。
Volumes
是用于持久化 Docker 容器生成和使用的数据的首选机制。虽然bind mounts
依赖于宿主机的目录结构,volumes
但完全由 Docker 管理。Volumes
通常比在容器的可写层中持久化数据更好的选择,因为卷不会增加使用它的容器的大小,并且卷的内容存在于给定容器的生命周期之外。更多关于
-v
和--mount
行为之间的差异
因为-v
和--volume
标志长期以来一直是 Docker 的一部分,所以它们的行为无法改变。这意味着 -v
和之间存在一种不同的行为--mount
。
如果您使用-v
或--volume
绑定挂载 Docker 主机上尚不存在的文件或目录,请-v
为您创建端点。它始终创建为目录。
如果您使用--mount
绑定贴装尚不泊坞窗主机上存在的文件或目录,码头工人也不会自动为您创建它,但会产生一个错误。更多关于
Docker for Windows 共享文件夹限制
Docker for Windows 确实使大部分 VM 对 Windows 主机透明,但它仍然是一个虚拟机。例如,当–v
与 mongo 容器一起使用时,MongoDB 需要文件系统支持的其他东西。还有一个关于卷挂载非常慢的问题。
更多关于
归档时间: |
|
查看次数: |
9100 次 |
最近记录: |