docker数据卷
创建数据卷:docker run -d -P -it --name web1 -v /webapp training/webapp /bin/bash
(使用training/webapp镜像创建一个web1容器,并创建一个数据卷挂载到容器的/webapp目录)
-v标记创建一个数据卷(名字叫webapp)并且挂载到容器(training/webapp)里。
--name指定容器的名称web1
-d是指守护状态下运行(daemon)
-v标记也可以指定挂载一个本地的已有目录到容器中去作为数据卷(推荐方式)。
docker run -d -P --name web -v /tmp/webapp:/opt/webapp training/webapp /bin/bash
(挂载主机上/tmp/webapp目录,到容器的/opt/webapp下作为数据卷)
数据卷容器
如果用户需要在多个容器之间共享一些持续更新的数据,最简单的方式是使用数据卷容器。数据卷容器也是一个容器,但是它的目的是专门用来提供数据卷供其他容器挂载。
首先,创建一个数据卷容器dbdata,并在其中创建一个数据卷挂载到/dbdata:
docker run -ti -v /dbdata --name dbdata ubuntu
然后,可以在其他容器中使用--volumes-from来挂载dbdata容器中的数据卷.
例如创建db1和db2两个容器,并从dbdata容器挂载数据卷:
docker run -ti --volumes-from dbdata --name db1 ubuntu
docker run -ti --volumes-from dbdata --name db2 ubuntu
此时容器db1和db2都挂载同一个数据卷到相同的/dbdata目录。三个容器任何一方在该目录下的写入,其他容器都可以看到。
数据卷容器备份
1.挂载本地文件到容器内:
docker run --volumes-from db1 -v $(pwd):/docker --name db3 -it ubuntu /bin/bash
(把本地当前控制台所在目录$(pwd),挂载到容器db1的docker目录,指定为新容器db3(db1不会改动))
控制台所在目录$(pwd)下内容有:
进入db3容器内,发现相比db1多了docker目录,进入docker目录,多了docker文件(就是上面控制台所在目录的docker目录):
在本地机器上,对本地docker目录进行操作,新增文件:
进入容器db3,发现本地上的操作同步到了容器上:
对容器内进行操作,新增文件b.txt:
进入本地文件,发现,容器内操作同步到了本地