Volume的使用

对于需要在容器外持久化的数据,需要使用 mount

早期的docker只能挂载本地磁盘路径,也就是下面的第一种方式

第一种方式 直接挂载本地路径

docker run -d -it --name=nginx1 -p 8001:80 -v ~/tmp:/usr/share/nginx/html nginx

这种方式下,docker不会覆盖本地路径下的任何文件内容

也就是说,如果本地路径 tmp 中没有文件,那么挂载之后,容器在挂载的路径下,也会 没有任何文件

这是一种, 使用本地内容 覆盖 容器对应路径内容 的方式

第二种方式 创建由docker管理的volume

docker volume create tmpvol
docker run -d -it --name=nginx2 -p 8002:80 -v tmpvol:/usr/share/nginx/html nginx

这种方式的方便之处在于,它在持久化数据的同时,还可以继续使用容器内自带的内容

这是一种,仍然使用容器内容 存储到 指定的 volume 的方式

在Linux上,想要直接从宿主机访问这个路径非常容易

路径如下

在MacOS上就相对复杂一些,因为MacOS的 docker desktop 也是基于虚拟机实现的

旧版本的docker desktop 使用下面的命令附着到 tty之后,可以访问上面和 linux类似的路径

screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty

然而在 3.1.0 的版本中,我没有找到这个tty文件

实际上是,这个操作反而变得比以前简单了

注意到右上角的 CLI 图标了么?

只不过这种方式不是在宿主机上,而是 docker exec 提供的 sh

Send a Message