docker的数据共享

在docker host和容器之间共享数据

$ ls
data
$ docker run -ti -v "$PWD":/cookbook ubuntu:14.04 /bin/bash
root@11769701f6f7:/# ls /cookbook
data

上面的例子,将docker host的当前目录挂载到容器的/cookbook目录中。如果在容器中,任何写入/cookbook目录中的文件,
都会直接被写在docker host的当前目录中。

$ docker run -ti -v "$PWD":/cookbook ubuntu:14.04 /bin/bash
root@44d71a605b5b:/# touch /cookbook/foobar
root@44d71a605b5b:/# exit
exit
$ ls -l foobar
-rw-r--r-- 1 root root 0 Mar 11 11:42 foobar

默认情况下,docker挂载目录使用的是读写模式,如果你想挂载一个目录,但是只容许只读,那么可以使用下面的方式:

$ docker run -ti -v "$PWD":/cookbook:ro ubuntu:14.04 /bin/bash

在容器之间共享数据

我们之前使用docker run命令的-v选项,指定了docker host的vplume路径以及挂载到容器中的路径,但是如果
我们没有给-v选项提供docker hoshost的vplume路径的话,那么我们将会创建一个data container:

~> docker run -ti -v /data ubuntu /bin/bash
root@62bfe2e7cf6d:/#
~> docker inspect -f {{.Mounts}} 62bfe2e7cf6d
[{volume 126b23f7246fee5a905efb98549367369bdea2cda2c93621bf5e7e21507b783b /var/lib/docker/volumes/126b23f7246fee5a905efb98549367369bdea2cda2c93621bf5e7e21507b783b/_data /data local  true }]
~>
~>
~> docker volume ls
DRIVER              VOLUME NAME
local               126b23f7246fee5a905efb98549367369bdea2cda2c93621bf5e7e21507b783b

当然了,上面的/var/lib/docker/volumes/126b23f7246fee5a905efb98549367369bdea2cda2c93621bf5e7e21507b783b/_data这个路径是在你的电脑上不能直接访问的,具体的解释
可以参见这个网址:https://forums.docker.com/t/host-path-of-volume/12277.
如果想在容器之间共享某个容器挂在的volume,那么可以使用--volumes-from选项。
在下面的例子中,我们先启动一个容器,然后启动另外一个容器,使用--volumes-from选项,并创建了一个文件,最后在第一个容器的对应目录下,就可以看到新创建的文件了。

~> docker run -ti -v /data ubuntu /bin/bash
root@62bfe2e7cf6d:/#
~> docker run -ti --volumes-from 62bfe2e7cf6d ubuntu /bin/bash
root@c898da346507:/# ls
bin  boot  data  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@c898da346507:/# echo "aaaa" > data/aaaa.txt
root@c898da346507:/# ls data/
aaaa.txt
root@62bfe2e7cf6d:/# ls
bin  boot  data  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@62bfe2e7cf6d:/# cd data/
root@62bfe2e7cf6d:/data# ls
aaaa.txt
root@62bfe2e7cf6d:/data#
本文版权归作者所有,禁止一切形式的转载,复制等操作
赞赏

微信赞赏支付宝赞赏

发表评论

电子邮件地址不会被公开。 必填项已用*标注