Docker容器数据卷

1.容器数据卷是什么

实现容器数据持久化的一种方式。

2.容器数据卷的特点

①可以在容器之间、容器与宿主机之间共享或重用数据

②数据卷中的更改可以直接生效

③数据卷的更改不会包含在镜像的更新中

④数据卷的生命周期一直持续到没有容器使用它为止

3.自动共享

我们可以使用docker cp命令在主机和容器间相互拷贝数据,相对比较麻烦,当设置好容器数据卷后,不管是主机还是容器,当数据卷目录下有变动时,其他有映射关系的目录会自动同步。

4.添加方式

4.1 命令添加

# docker run -it -v 宿主机绝对路径:容器内目录  镜像名

# docker run -itd -v /root/pmVolume:/containerVolume ubuntu /bin/bash
执行完该命令后,会自动在宿主机/root目录下生成pmVolume目录,在生成的容器中生成/containerVolume目录
并且在这两个目录下有任何变化时,另一方目录会自动变化。(容器停止时也会同步)

查看底层信息

# docker inspect 80dd327ca6f4
"Mounts": [
            {
                "Type": "bind",
                "Source": "/root/pmVolume",
                "Destination": "/containerVolume",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            }
        ]

   创建只读容器数据卷(容器中只读)

# docker run -itd -v /root/pmVolume:/containerVolume:ro ubuntu /bin/bash

4.2 Dockerfile添加

 因为上面使用-v是宿主机到容器的数据卷绑定,这个对宿主机有依赖,不适合容器的移植与分享,所以dockerfile方式适用于容器之间的数据卷。

mydockerfile内容:

FROM ubuntu
VOLUME ["/volume1","/volume2"]
CMD echo "Data Volume created successfully!"
CMD /bin/bash

通过dockerfile构建镜像

# docker build -f mydockerfile -t pm/ubuntu ./
Sending build context to Docker daemon  2.048kB
Step 1/4 : FROM ubuntu
 ---> f643c72bc252
Step 2/4 : VOLUME ["/volume1","/volume2"]
 ---> Running in 4f677de96b04
Removing intermediate container 4f677de96b04
 ---> 9fc884b7767a
Step 3/4 : CMD echo "Data Volume created successfully!"
 ---> Running in 1dd72128a5da
Removing intermediate container 1dd72128a5da
 ---> e278ba450d4e
Step 4/4 : CMD /bin/bash
 ---> Running in d4c7640a26eb
Removing intermediate container d4c7640a26eb
 ---> c92c94406166
Successfully built c92c94406166
Successfully tagged pm/ubuntu:latest

使用上面镜像创建的容器中会自动生成目录/volume1和/volume2,通过docker inspect可以查看对应的宿主机的目录,如/var/lib/docker/volumes/30f3aaaf92a50f6a240efc6d204d6d33bca1cf6503c28d59f2bbb84d50062e48/_data

 5.数据卷容器

从一个带有数据卷的容器,生成一个新的容器,新生成的容器也会创建数据卷目录,并跟其他容器同步。

# docker run -it --volumes-from c3ff969b7c07 ubuntu /bin/bash

注:当有多个容器都是通过这个方法创建的时候,只要还有一个容器存在,这个数据卷都是存在的。

 

posted @ 2021-03-31 16:20  盗哥泡茶去了  阅读(57)  评论(0编辑  收藏  举报