Docker容器数据卷-Volume小结

Docker中的数据可以存储在类似于虚拟机磁盘的介质中,在Docker中称为数据卷(Data Volume)。数据卷可以用来存储Docker应用的数据,也可以用来在Docker容器间进行数据共享。数据卷呈现给Docker容器的形式就是一个目录,支持多个容器间共享,修改也不会影响镜像。使用Docker的数据卷,类似在系统中使用 mount 挂载一个文件系统。操作Docker数据卷,需要理解以下几点:

1)一个数据卷是一个特别指定的目录,该目录利用容器的UFS文件系统可以为容器提供一些稳定的特性或者数据共享。数据卷可以在多个容器之间共享。

2)创建数据卷,只要在docker run命令后面跟上-v参数即可创建一个数据卷,当然也可以跟多个-v参数来创建多个数据卷,当创建好带有数据卷的容器后,就可以在其他容器中通过–volumes-froms参数来挂载该数据卷了,而不管该容器是否运行。也可以在Dockerfile中通过VOLUME指令来增加一个或者多个数据卷。

3)如果有一些数据想在多个容器间共享,或者想在一些临时性的容器中使用该数据,那么最好的方案就是你创建一个数据卷容器,然后从该临时性的容器中挂载该数据卷容器的数据。这样,即使删除了刚开始的第一个数据卷容器或者中间层的数据卷容器,只要有其他容器使用数据卷,数据卷都不会被删除的。

4)不能使用docker export、save、cp等命令来备份数据卷的内容,因为数据卷是存在于镜像之外的。备份方法: 创建一个新容器,挂载数据卷容器,同时挂载一个本地目录,然后把远程数据卷容器的数据卷通过备份命令备份到映射的本地目录里面。如下:
docker run --rm --volumes-from DATA -v $(pwd):/backup busybox tar cvf /backup/backup.tar /data
5)可以把一个本地主机的目录当做数据卷挂载在容器上,同样是在docker run后面跟-v参数,不过-v后面跟的不再是单独的目录了,它是[host-dir]:[container-dir]:[rw|ro]这样格式的,其中host-dir是一个绝对路径的地址,如果host-dir不存在,则docker会创建一个新的数据卷,如果host-dir存在,但是指向的是一个不存在的目录,则docker也会创建该目录,然后使用该目录做数据源。

Docker Volume数据卷可以实现:
-> 绕过“拷贝写”系统,以达到本地磁盘IO的性能,(比如运行一个容器,在容器中对数据卷修改内容,会直接改变宿主机上的数据卷中的内容,所以是本地磁盘IO的性能,而不是先在容器中写一份,最后还要将容器中的修改的内容拷贝出来进行同步。)
-> 绕过“拷贝写”系统,有些文件不需要在docker commit打包进镜像文件。
-> 数据卷可以在容器间共享和重用数据
-> 数据卷可以在宿主和容器间共享数据
-> 数据卷数据改变是直接修改的
-> 数据卷是持续性的,直到没有容器使用它们。即便是初始的数据卷容器或中间层的数据卷容器删除了,只要还有其他的容器使用数据卷,那么里面的数据都不会丢失。

Docker数据持久化:
容器在运行期间产生的数据是不会写在镜像里面的,重新用此镜像启动新的容器就会初始化镜像,会加一个全新的读写入层来保存数据。如果想做到数据持久化,Docker提供数据卷(Data volume)或者数据容器卷来解决问题,另外还可以通过commit提交一个新的镜像来保存产生的数据。

一、创建一个数据卷

[root@lcalhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              14.04               6e4f1fe62ff1        4 months ago        197MB
[root@lcalhost ~]# docker run -it --name data -v /opt/data ubuntu:14.04 /bin/bash 
root@afdfa533b77e:/# cd /opt/data/
root@afdfa533b77e:/opt/data# ls
root@afdfa533b77e:/opt/data# echo "123" > 123
root@afdfa533b77e:/opt/data# echo "123456" > 123456
root@afdfa533b77e:/opt/data# ls
123  123456
root@afdfa533b77e:/opt/data# [root@lcalhost ~]# 
[root@lcalhost ~]# docker ps 
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
afdfa533b77e        ubuntu:14.04        "/bin/bash"         39 seconds ago      Up 38 seconds                           data
[root@lcalhost ~]# docker inspect data | grep /var/lib/docker/volumes
                "Source": "/var/lib/docker/volumes/9ebb5792a6b4c7c92390cd63e857ea7b22192521169205e833b3d674614de650/_data",
[root@lcalhost ~]# ls /var/lib/docker/volumes/9ebb5792a6b4c7c92390cd63e857ea7b22192521169205e833b3d674614de650/_data
123  123456
[root@lcalhost ~]# echo "asdfghjkjlk" >> /var/lib/docker/volumes/9ebb5792a6b4c7c92390cd63e857ea7b22192521169205e833b3d674614de650/_data/123
[root@lcalhost ~]# docker attach data
root@afdfa533b77e:/opt/data# 
root@afdfa533b77e:/opt/data# ls
123  123456
root@afdfa533b77e:/opt/data# cat 123
123
asdfghjkjlk
root@afdfa533b77e:/opt/data# 

二、挂载宿主机文件或目录到容器数据卷

可以直接挂载宿主机文件或目录到容器里,可以理解为目录映射,这样就可以让所有的容器共享宿主机数据,从而只需要改变宿主机的数据源就能够影响到所有的容器数据。

注意:
-v后面的映射关系是"宿主机文件/目录:容器里对应的文件/目录",其中,宿主机上的文件/目录是要提前存在的,容器里对应的文件/目录会自动创建。

数据卷权限:
挂载的数据默认为可读写权限。
但也可以根据自己的需求,将容器里挂载共享的数据设置为只读,这样数据修改就只能在宿主机上操作。如下实例:

1)挂载宿主机文件到容器上

[root@lcalhost ~]# docker run -it --name test -v /etc/web.list:/etc/web.list ubuntu:14.04 /bin/bash
root@70f405346f68:/# cat /etc/web.list 
192.168.31.100
192.168.31.101
192.168.31.102
root@70f405346f68:/# echo "192.168.31.103" >> /etc/web.list 
root@70f405346f68:/# [root@lcalhost ~]# 
[root@lcalhost ~]# cat /etc/web.list 
192.168.31.100
192.168.31.101
192.168.31.102
192.168.31.103
[root@lcalhost ~]# 

2)挂载宿主机目录到容器上

[root@lcalhost ~]# mkdir /var/hanshuaiping
[root@lcalhost ~]# echo "test" > /var/hanshuaiping/test
[root@lcalhost ~]# echo "test1" > /var/hanshuaiping/test1
[root@lcalhost ~]# docker run -it --name hsp -v /var/hanshuaiping/:/opt/hanshuaiping ubuntu:14.04 /bin/bash
root@da353c19eb20:/# cd /opt/hanshuaiping/
root@da353c19eb20:/opt/hanshuaiping# ls
test  test1
root@da353c19eb20:/opt/hanshuaiping# cat test
test
root@da353c19eb20:/opt/hanshuaiping# cat test1
test1
root@da353c19eb20:/opt/hanshuaiping# echo "123" >> test
root@da353c19eb20:/opt/hanshuaiping# echo "456" >> test1
root@da353c19eb20:/opt/hanshuaiping# [root@lcalhost ~]# 
[root@lcalhost ~]# cat /var/hanshuaiping/test
test
123
[root@lcalhost ~]# cat /var/hanshuaiping/test1
test1
456
[root@lcalhost ~]# 

3)挂载多个目录

[root@lcalhost ~]# mkdir /opt/data1 /opt/data2
[root@lcalhost ~]# echo "123456" > /opt/data1/test1
[root@lcalhost ~]# echo "qwerty" > /opt/data2/test2
[root@lcalhost ~]# docker run -it --name data1 -v /opt/data1:/var/www/data1 -v /opt/data2:/var/www/data2 ubuntu:14.04 /bin/bash
root@703e95298f3b:/# ls /var/www/data1
test1
root@703e95298f3b:/# ls /var/www/data2
test2
root@703e95298f3b:/# cat /var/www/data1/test1 
123456
root@703e95298f3b:/# cat /var/www/data2/test2 
qwerty
root@703e95298f3b:/# echo "data1" >> /var/www/data1/test1 
root@703e95298f3b:/# echo "data2" >> /var/www/data2/test2 
root@703e95298f3b:/# [root@lcalhost ~]# 
[root@lcalhost ~]# cat /opt/data1/test1 
123456
data1
[root@lcalhost ~]# cat /opt/data2/test2
qwerty
data2
[root@lcalhost ~]# 

三、创建数据卷容器

启动一个名为xqsj_Container容器,此容器包含两个数据卷/var/volume1和/var/volume2(这两个数据卷目录是在容器里的,容器创建的时候会自动生成这两目录)
注意一个细节:
下面的创建命令中,没有加-t和-i参数,所以这个容器创建好之后是登陆不了的!
-i:表示以“交互模式”运行容器
-t:表示容器启动后会进入其命令行

[root@localhost ~]# docker run -v /var/volume1 -v /var/volume2 --name xqsj_Container centos /bin/bash
[root@localhost ~]#

所以要想创建容器后能正常登陆,就需要添加上面两个参数

[root@localhost ~]# docker run -t -i -v /var/volume1 -v /var/volume2 --name xqsj_Container centos /bin/bash
[root@73a34f3c1cd9 /]#

查看宿主机上与数据卷对应的目录路径:

[root@localhost ~]# docker inspect xqsj_Container|grep /var/lib/docker/volumes
                "Source": "/var/lib/docker/volumes/b8d2e5bcadf2550abd36ff5aa544c721a45464a4406fb50979815de773086627/_data",
                "Source": "/var/lib/docker/volumes/a34fa3a0a7a2f126b0d30a32b1034f20917ca7bd0dda346014d768b5ebb68f6b/_data",
由上面命令结果可以查到,两个数据卷/var/volume1和/var/volume2下的数据在/var/lib/docker/volumes/下对于的两个目录的_data下面

创建App_Container容器,挂载xqsj_Container容器中的数据卷

[root@linux-node2 ~]# docker run -t -i --rm --volumes-from xqsj_Container --name App_Container centos /bin/bash
[root@b9891bcdfed0 /]# ls /var/volume1                           //发现这两个数据卷都存在
[root@b9891bcdfed0 /]# ls /var/volume2
[root@b9891bcdfed0 /]# echo "this is volume1" > /var/volume1/test1
[root@b9891bcdfed0 /]# echo "this is volume2" > /var/volume1/test2

可以再创建一个容器,挂载App_Container中从xqsj_Container挂载的数据卷。当然也可以直接挂载初始的xqsj_Container容器数据卷

[root@linux-node2 ~]# docker run -t -i --rm --volumes-from App_Container --name LastApp_Container centos /bin/bash
[root@b4c27e360614 /]# ls /var/volume1
test1
[root@b4c27e360614 /]# ls /var/volume2
test2
[root@b4c27e360614 /]# cat /var/volume1/test1
this is volume1
[root@b4c27e360614 /]# cat /var/volume2/test2
this is volume2

即便是删除了初始的数据卷容器xqsj_Container,或是删除了其它容器,但只要是有容器在使用该数据卷,那么它里面的数据就不会丢失!(除非是没有容器在使用它们)

四、备份数据卷

[root@lcalhost ~]# docker run -it --name test1 -v /root/data/:/test1/ ubuntu:14.04 /bin/bash
root@1e290173b0d3:/# ll
total 4
drwxr-xr-x   2 root root    6 Mar 12 08:53 test1/
root@1e290173b0d3:/# cd test1/
root@1e290173b0d3:/test1# mkdir a b c
root@1e290173b0d3:/test1# ls
a  b  c
root@1e290173b0d3:/test1# [root@lcalhost ~]# 
[root@lcalhost ~]# docker run --rm --volumes-from test1 -v $(pwd):/backup ubuntu:14.04 tar -zcvf /backup/test.tar /test1
tar: Removing leading `/' from member names
/test1/
/test1/a/
/test1/b/
/test1/c/
[root@lcalhost ~]# ll
总用量 206104
drwxr-xr-x   2 root root         6 3月   9 17:27 test
-rw-r--r--   1 root root       142 4月  24 15:49 test.tar
[root@lcalhost ~]# cd test
[root@lcalhost test]# ll
总用量 0
[root@lcalhost test]# cd 
[root@lcalhost ~]# cp test.tar test
[root@lcalhost ~]# cd test
[root@lcalhost test]# tar -zxvf test.tar 
test1/
test1/a/
test1/b/
test1/c/
[root@lcalhost test]# ll
总用量 4
drwxr-xr-x 5 root root  33 4月  24 15:43 test1
-rw-r--r-- 1 root root 142 4月  24 15:50 test.tar
[root@lcalhost test]# cd test1
[root@lcalhost test1]# ll
总用量 0
drwxr-xr-x 2 root root 6 4月  24 15:43 a
drwxr-xr-x 2 root root 6 4月  24 15:43 b
drwxr-xr-x 2 root root 6 4月  24 15:43 c


---------------------------------------------看看下面的一个实例---------------------------------------------
先创建一个容器han,包含两个数据卷/var/volume1和/var/volume2(这两个目录是在容器里的数据卷路径)
[root@lcalhost ~]# docker run -it -v /var/volume1 -v /var/volume2 --name han ubuntu:14.04 /bin/bash
  
根据Docker的数据持久化之数据卷容器可知,上面创建的wang数据卷容器挂载了/var/volume1和/var/volume2两个目录
然后在数据卷里写些数据,以供测试。
root@e3d09b7d5992:/# cd /var/volume1
root@e3d09b7d5992:/var/volume1# echo "test1" > test1
root@e3d09b7d5992:/var/volume1# echo "test11" > test11
root@e3d09b7d5992:/var/volume1# echo "test111" > test111
root@e3d09b7d5992:/var/volume1# ls
test1  test11  test111
root@e3d09b7d5992:/var/volume1# cd ../volume2
root@e3d09b7d5992:/var/volume2# echo "test2" > test2
root@e3d09b7d5992:/var/volume2# echo "test22" > test22
root@e3d09b7d5992:/var/volume2# echo "test222" > test222
root@e3d09b7d5992:/var/volume2# ls
test2  test22  test222

然后进行这两个数据卷的备份
[root@lcalhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
e3d09b7d5992        ubuntu:14.04        "/bin/bash"         About a minute ago   Up About a minute                       han

  
  
现在开始进行数据卷的备份操作:
为了利用数据卷容器备份,使用--volumes-from标记来创建一个加载wang容器卷的容器,并从主机挂载当前目录到容器的/backup目录。并备份wang卷中的数据,执行完成之后删除容器--rm,此时备份就在当前的目录下了。
  
1)备份wang容器中的/var/volume1数据卷数据<strong>(注意下面:命令中的-i和-t这两个参数加不加都可以;--rm加上,备份后就会自动删除这个容器,如果不加这个--rm参数,那么备份后的容器就会保留,docker ps -a就会查看到)</strong>
[root@lcalhost ~]# docker run -it --rm --volumes-from han -v $(pwd):/backup ubuntu:14.04 tar -zcvf /backup/backup1.tar /var/volume1
tar: Removing leading `/' from member names
/var/volume1/
/var/volume1/test1
/var/volume1/test11
/var/volume1/test111

  
2)备份wang容器中的/var/volume2数据卷数据
[root@lcalhost ~]# docker run -it --rm --volumes-from han -v $(pwd):/backup ubuntu:14.04 tar -zcvf /backup/backup2.tar /var/volume2
tar: Removing leading `/' from member names
/var/volume2/
/var/volume2/test2
/var/volume2/test22
/var/volume2/test222

  
3)备份wang容器中的/var/volume1和/var/volume2数据卷数据
[root@lcalhost ~]# docker run -it --rm --volumes-from han -v $(pwd):/backup ubuntu:14.04 tar -zcvf /backup/backup.tar /var/volume1 /var/volume2
tar: Removing leading `/' from member names
/var/volume1/
/var/volume1/test1
/var/volume1/test11
/var/volume1/test111
/var/volume2/
/var/volume2/test2
/var/volume2/test22
/var/volume2/test222
[root@lcalhost ~]# ll
总用量 206080
-rw-r--r--   1 root root       207 4月  24 16:06 backup1.tar
-rw-r--r--   1 root root       205 4月  24 16:06 backup2.tar
-rw-r--r--   1 root root       278 4月  24 16:07 backup.tar

五、恢复或迁移数据卷

可以恢复给同一个容器或者另外的容器,新建容器并解压备份文件到新的容器数据卷
docker run -t -i -d -v /test --name test4 ubuntu:14.04  /bin/bash
docker run --rm --volumes-from test4 -v $(pwd):/backup ubuntu:14.04 tar xvf /backup/test.tar -C /
恢复之前的文件到新建卷中,执行完后自动删除容器 test/ test/b test/d test/c test/a
  
-----------------------------接着上面的实例进行数据卷恢复操作--------------------------
[root@lcalhost ~]# docker ps 
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
e3d09b7d5992        ubuntu:14.04        "/bin/bash"         14 minutes ago      Up 14 minutes                           han

  
1)恢复数据给同一个容器
测了测试效果,先删除数据卷(注意:数据卷目录删除不了,只能删除其中的数据。)
[root@lcalhost ~]# docker attach han
root@e3d09b7d5992:/var/volume2# 
root@e3d09b7d5992:/var/volume2# ls /var/volume1
test1  test11  test111
root@e3d09b7d5992:/var/volume2# ls /var/volume2
test2  test22  test222
root@e3d09b7d5992:/var/volume2# rm -rf /var/volume1/* /var/volume2/*
root@e3d09b7d5992:/var/volume2# ls /var/volume1/                
root@e3d09b7d5992:/var/volume2# ls /var/volume2/
root@e3d09b7d5992:/var/volume2# 

  
现在进行数据卷恢复,恢复数据卷中的所有数据:
[root@lcalhost ~]# ll
总用量 206080
-rw-r--r--   1 root root       207 4月  24 16:06 backup1.tar
-rw-r--r--   1 root root       205 4月  24 16:06 backup2.tar
-rw-r--r--   1 root root       278 4月  24 16:07 backup.tar

  
注意-C后面的路径,这个路径表示将数据恢复到容器里的路径。
命令中用"/",即表示将backup.tar中的数据解压到容器的/路径下。后面跟什么路径,就解压到这个路径下。因此这里用"/"
[root@lcalhost ~]# docker run -it --rm --volumes-from han -v $(pwd):/backup ubuntu:14.04 tar -zxvf /backup/backup.tar -C /
var/volume1/
var/volume1/test1
var/volume1/test11
var/volume1/test111
var/volume2/
var/volume2/test2
var/volume2/test22
var/volume2/test222

  
再次到容器里查看,发现数据卷里的数据已经恢复了
[root@lcalhost ~]# docker attach han
root@e3d09b7d5992:/var/volume2# 
root@e3d09b7d5992:/var/volume2# ls /var/volume1
test1  test11  test111
root@e3d09b7d5992:/var/volume2# ls /var/volume2
test2  test22  test222

  
2)恢复数据给另外的容器,新建容器并解压备份文件到新的容器数据卷
即新建一个容器huihui,将上面备份的数据卷数据恢复到这个新容器里。
[root@lcalhost ~]# docker run -it -v /var/volume1 -v /var/volume2 --name hanhan ubuntu:14.04 /bin/bash
root@4e8363108cd1:/# ls /var/volume1/
root@4e8363108cd1:/# ls /var/volume2/
  
[root@lcalhost ~]# ll
总用量 206080
-rw-r--r--   1 root root       207 4月  24 16:06 backup1.tar
-rw-r--r--   1 root root       205 4月  24 16:06 backup2.tar
-rw-r--r--   1 root root       278 4月  24 16:07 backup.tar

  
[root@lcalhost ~]# docker run --rm --volumes-from hanhan -v $(pwd):/backup ubuntu:14.04 tar -zxvf /backup/backup.tar -C /
var/volume1/
var/volume1/test1
var/volume1/test11
var/volume1/test111
var/volume2/
var/volume2/test2
var/volume2/test22
var/volume2/test222
  
[root@lcalhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
4e8363108cd1        ubuntu:14.04        "/bin/bash"         4 minutes ago       Up 4 minutes                            hanhan
[root@lcalhost ~]# docker attach hanhan
root@4e8363108cd1:/# 
root@4e8363108cd1:/# ls /var/volume1/
test1  test11  test111
root@4e8363108cd1:/# ls /var/volume2/
test2  test22  test222
  
  
这里注意一下:
新容器创建时挂载的数据卷路径要和之前备份的数据卷路径一致,不然会恢复数据失败
  
1)如果新容器创建时挂载的数据卷目录跟之前备份的路径不一致
[root@localhost ~]# docker run -t -i -v /var/hanhan --name huihui ubuntu:14.04 /bin/bash
root@4e8363108cd1:/# ls /var/hanhan/
root@4e8363108cd1:/#
  
如果解压时-C后面跟的路径不是容器挂载的容器,那么数据恢复不了,如下
[root@localhost ~]# docker run --rm --volumes-from hanhan -v $(pwd):/backup ubuntu:14.04 tar xvf /backup/backup.tar -C /
var/volume1/
var/volume1/test1
var/volume1/test11
var/volume1/test111
var/volume2/
var/volume2/test2
var/volume2/test22
var/volume2/test222
  
发现容器内数据没有恢复
root@4e8363108cd1:/# ls /var/hanhan/
root@4e8363108cd1:/#
  
但是如果解压时-C后面跟的是容器挂载的路径,数据就能正常恢复
[root@localhost ~]# docker run --rm --volumes-from hanhan -v $(pwd):/backup ubuntu:14.04 tar xvf /backup/backup.tar -C /var/hanhan
var/volume1/
var/volume1/test1
var/volume1/test11
var/volume1/test111
var/volume2/
var/volume2/test2
var/volume2/test22
var/volume2/test222
[root@localhost ~]#
  
发现容器内数据已经恢复了
root@4e8363108cd1:/# ls /var/hanhan/
var
root@4e8363108cd1:/# ls /var/hanhan/var/
volume1  volume2
root@4e8363108cd1:/# ls /var/hanhan/var/volume1
test1  test11  test111
root@4e8363108cd1:/# ls /var/hanhan/var/volume2
test2  test22  test222

六、删除数据卷

Volume 只有在下列情况下才能被删除:
1)docker rm -v删除容器时添加了-v选项
2)docker run --rm运行容器时添加了--rm选项

否则,会在/var/lib/docker/volumes目录中遗留很多不明目录。
可以使用下面方式找出,然后删除_data目录下的数据文件
[root@lcalhost ~]# docker inspect hanhan | grep /var/lib/docker/volumes/
                "Source": "/var/lib/docker/volumes/09c358dcda33c7ce09214d08d504e9134b61dca42fa35d2075118ac18d36acd4/_data",
                "Source": "/var/lib/docker/volumes/1743224779cf5e7b4062e297209326f0c39b90c582ee642d5676bca124c57944/_data",

 
可以使用 docker rm -v 命令在删除容器时删除该容器的卷。示例如下:
[root@lcalhost ~]# docker run -d --name hanhan1 -v /www ubuntu:14.04
735147bcccceffc4d0d0b250b59a97e5640752a8e8aa0aa4bc7ea23a50ed6ea9
[root@lcalhost ~]# docker volume ls
DRIVER              VOLUME NAME
local               09c358dcda33c7ce09214d08d504e9134b61dca42fa35d2075118ac18d36acd4
local               0def19448e32e8cc52c3ad515a6c87161861467abb83c7d80da21d08f5245ec7
local               1743224779cf5e7b4062e297209326f0c39b90c582ee642d5676bca124c57944
local               9ebb5792a6b4c7c92390cd63e857ea7b22192521169205e833b3d674614de650
local               a9421ebe638d202e2249ba72efe3a567feaf62c9ed1e13d56439b8511d5ae304
local               ea692e38c90fea582f0560a4cb027c7c261e9306bef404bf70ebe17105cfafbd
[root@lcalhost ~]# docker rm -vf hanhan1
hanhan1
[root@lcalhost ~]# docker volume ls
DRIVER              VOLUME NAME
local               09c358dcda33c7ce09214d08d504e9134b61dca42fa35d2075118ac18d36acd4
local               1743224779cf5e7b4062e297209326f0c39b90c582ee642d5676bca124c57944
local               9ebb5792a6b4c7c92390cd63e857ea7b22192521169205e833b3d674614de650
local               a9421ebe638d202e2249ba72efe3a567feaf62c9ed1e13d56439b8511d5ae304
local               ea692e38c90fea582f0560a4cb027c7c261e9306bef404bf70ebe17105cfafbd

===================== Docker新版本出现docker volume 命令:创建数据卷 ======================

Docker 新版本中引入了 docker volume 命令来管理 Docker volume。
 
使用默认的 'local' driver 创建一个volume数据卷
[root@lcalhost ~]# docker volume create --name kevin
kevin
[root@lcalhost ~]# docker volume ls
DRIVER              VOLUME NAME
local               kevin
[root@lcalhost ~]# ll /var/lib/docker/volumes/
总用量 28
drwxr-xr-x 3 root root    19 4月  24 16:50 kevin
[root@lcalhost ~]# docker run -d --name test2 -v kevin:/volume ubuntu:14.04
d1455b18f12e4418258824d8f308c89a3d79915a45ab19c987e3a239af836f09

 
[root@lcalhost ~]# docker inspect test2 | grep "/var/lib/docker/volumes/"
                "Source": "/var/lib/docker/volumes/kevin/_data",
 
 
即将kevin数据卷对应在本机上的目录/var/lib/docker/volumes/kevin/_data挂载给容器内的 /volume 目录。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值