docker volume

Data Volumes的初衷是实现独立于容器的生命周期实现数据持久化,实现多个docker容器之间的数据持久化及共享,因此删除容器的时候不回删除卷,也不会对哪怕未被引用的卷作垃圾回收.
Volume在初始化的时候就会创建,由base image提供的卷中的数据会在此期间完成复制.

Docke-managed Volume

docker run --name b1 -it -v /data busybox

这个命令在容器中创建了一个data目录,并且这个目录内在宿主机上也有对应的路径:
/var/lib/docker/volumes/8cce4397f5ed1516742f8865bef532f8d5ce953347a0bf5a13ecf8bce8cfbb34/_data

执行:

docker inspect b1

可以在inspect到的信息config节点里找到这样的配置:

"Mounts": [
            {
                "Type": "volume",
                "Name": "8cce4397f5ed1516742f8865bef532f8d5ce953347a0bf5a13ecf8bce8cfbb34",
                "Source": "/var/lib/docker/volumes/8cce4397f5ed1516742f8865bef532f8d5ce953347a0bf5a13ecf8bce8cfbb34/_data",
                "Destination": "/data",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            }
        ],

Bind-mount Volume

docker run --name b2 -it --rm -v /data/volumes/b2:/data busybox

再执行

docker inspect b2

来查看Mounts节点的配置

"Mounts": [
            {
                "Type": "bind",
                "Source": "/data/volumes/b2",
                "Destination": "/data",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            }
        ]

当我们关闭容器的时候,容器删除,而创建的宿主机上的卷依然存在.

多个容器挂载同一个Volume

实现多个容器间数据的同步与交互
和上面的操作类似.
如果环境允许,我们可以挂载一个nfs
docker支持复制其他容器的存储卷,也支持复制网络配置.

docker run -it --rm --name b3 --volumes-from b1 busybox:latest

~~完

你可能感兴趣的:(Docker)