docker学习笔记volume的创建 下载本文

内容发布更新时间 : 2024/5/23 2:10:49星期一 下面是文章的全部内容请认真阅读。

Docker学习笔记——Volume的创建

Volume可以将容器以及容器产生的数据分离开来,这样当你删除容器的时候,才不会影响相关的数据。 注意:容器并不是为了持久化。 Volume的创建

Volume可以使用两种方式创建:

- 在Dockerfile中制定VOLUME /some/dir

- 执行docker run -v /some/dir命令指定

Docker会在主机上创建一个目录,默认情况下是在

/var/lib/docker下,然后将其挂载到指定的路径(/some/dir),当删除使用该Volume的容器时,Volume本身不会受到影响,可以一直保存下去。我们在主机上对/var/lib/docker目录的操作会同步到挂载该目录的容器中。

我们也可以使用-v参数来挂载指定的主机目录。例如: $ docker run -v /opt/data:/data ubuntu

该命令将挂载主机的/opt/data目录到容器内的/data目录上,任何在/opt/data目录的文件都将会出现在容器内。这可以用

来实现主机和容器之间的文件共享。

当容器中的指定的目录不存在的时候会自动创建,当已存在的时候,该目录下的文件并不会同步到主机上的Volume,然后Volume中的数据则会被复制到容器中。 Volume的删除

我们可以在删除容器的时候同时删除Volume。 $ docker rm -v my_container

不过如果当前有其他容器仍挂载该Volume时,其是不会被删除的。

因此,由于我们在删除一些容器的时候未加-v参数,导致主机的/var/lib/docker/vfs/dir目录下出现了一些僵尸目录和文件。 数据共享

我们可以在docker run的时候使用–volumes-from参数从一个容器中访问另一个容器的Volume。

$ docker run -it --name newcontainer --volumes-from container-test ubuntu /bin/bash

此时并不管容器container-test是否在运行。 数据容器

通常使用数据容器来持久化数据库和数据文件。 $ docker run --name dbdata mysql echo \

创建了一个名为dbdata的数据容器,运行完echo之后就停止了。数据容器是不需要运行的,只要创建好了就可以了。 $ docker run -d --volumes-from dbdata --name db1 mysql

启动一个数据库服务容器,连接到dbdata数据容器上。 注意:

- 数据容器不需运行,纯粹是在浪费资源

- 不需为数据容器单独使用一个小的镜像,直接使用数据库镜像本身就可以了 数据备份

如果要备份mysql数据库,我们需要备份数据容器中的/var/lib/mysql文件夹。

$ docker run --rm --volumes-from dbdata -v