数据卷
数据卷是一个提供给一个或多个容器使用的特殊目录,通过它可以实现以下功能:
- 共享和重用数据:数据卷可以在容器之间共享和重用。
- 数据持久化:对数据卷的修改会立即生效,并且数据卷的更新不会影响容器。
- 独立存储:卷会一直存在,直到没有容器使用它,类似于 Linux 下对目录或文件进行挂载。
创建一个数据卷
在用 docker run
命令启动容器时,可以使用 -v
标志来创建一个数据卷并将其挂载到容器里。
示例命令:
$ sudo docker run -d -P --name web -v /webapp training/webapp python app.py
上述命令会创建一个名为 /webapp
的数据卷,并挂载到名为 web
的容器中。
挂载一个主机目录作为数据卷
使用 -v
标志也可以将本地主机的目录挂载到容器中去。
示例命令:
$ sudo docker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp python app.py
此命令将主机的 /src/webapp
目录挂载到容器的 /opt/webapp
目录中。这样可以方便测试和调试工作。
注意:Dockerfile 不支持这种用法,因为不同操作系统的路径格式不同,目前还不能支持。
挂载一个本地主机文件作为数据卷
-v
标志也可以用于将单个文件从主机挂载到容器中。
示例命令:
$ sudo docker run --rm -it -v ~/.bash_history:/root/.bash_history ubuntu /bin/bash
此命令将主机的 ~/.bash_history
文件挂载到容器的 /root/.bash_history
文件中,这样可以记录在容器中输入的命令。
注意:直接挂载一个文件,许多文件编辑工具(如 vi
或 sed --in-place
)可能会造成文件 inode 的改变,从 Docker 1.1.0 开始,这会导致报错。因此,最简单的办法是直接挂载文件的父目录。
示例命令解析
创建并挂载数据卷:
$ sudo docker run -d -P --name web -v /webapp training/webapp python app.py
这个命令创建了一个容器
web
,并将数据卷/webapp
挂载到其中,同时运行training/webapp
镜像的python app.py
命令。挂载主机目录:
$ sudo docker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp python app.py
这个命令将主机目录
/src/webapp
挂载到容器的/opt/webapp
目录。只读挂载:
$ sudo docker run -d -P --name web -v /src/webapp:/opt/webapp:ro training/webapp python app.py
这个命令将主机目录
/src/webapp
挂载到容器的/opt/webapp
目录,并设置为只读模式。
本文由mdnice多平台发布
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。