Linux企业运维之docker数据卷

一、docker数据卷管理

数据卷简单来讲就是一个目录,它是直接挂载到容器中,因此数据卷不属于联合文件系统,数据卷里边的内容也不会因为容器的删除而丢失;所以数据卷的作用是做容器数据持久化,也可以用作容器之间的数据交换,也可以用作容器与外部机器的简介通信

bind mount是将主机上的目录或者文件挂载到容器中去,虽然它使用起来直观高效易于理解,但是有的时候进行删除操作时会删除掉原来本机中的数据而不仅仅是数据卷中的数据,因此这种方式还是存在一定的缺陷
docker managed volume这种方式就会比上边那种方式好很多

而且这种方式创建的数据卷目录很清晰明了

[root@docker1 ~]# docker volume create vol1
vol1
[root@docker1 ~]# docker volume ls
DRIVER    VOLUME NAME
local     vol1
[root@docker1 ~]# docker volume inspect vol1
[
    {
        "CreatedAt": "2022-11-11T10:48:14+08:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/vol1/_data",
        "Name": "vol1",
        "Options": {},
        "Scope": "local"
    }
]

将数据卷制定挂载到发布页目录 如果挂载时指向容器内已有的目录,原有数据会被复制到volume中
docker managed volume 不需要指定mount源,docker自动为容器创建数
据卷目录。

[root@docker1 ~]# docker run -d --name web1 -v vol1:/usr/share/nginx/html nginx
12ca12255edb909c03449b7a77bb147fcc161e41cbb20cd21edc6ddee0fb522f
[root@docker1 _data]# echo www.westos.org > index.html
[root@docker1 _data]# curl 172.17.0.2
www.westos.org

docker create不同于docker run它只会创建容器而不会直接运行,

[root@docker1 ~]# docker create --name voldata -v /mnt/data1:/data1:rw -v /mnt/data2:/data2:ro busybox
2b8ea700eeb38dbf468ad07f677acdc1f6bd209497dd22a7f5e62d4e6d541d96
[root@docker1 ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@docker1 ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED          STATUS    PORTS     NAMES
2b8ea700eeb3   busybox   "sh"      10 seconds ago   Created             voldata

指定当前这个容器从上边这个容器的容器数据卷中读取

[root@docker1 ~]# docker run -it --rm --volumes-from voldata busybox
/ # ls
bin    data1  data2  dev    etc    home   proc   root   sys    tmp    usr    var
/ # cd /data1/
/data1 # ls
/data1 # touch file1
/data1 # cd /data2/
/data2 # touch file2
touch: file2: Read-only file system

两种方式的对比和区别
在这里插入图片描述

二、卷插件介绍

当我们将卷插件以nfs的方式来运行的是时候,就可以做到在两个容器上同时运行容器,数据目录中的数据是同步的,即使其中一个主机上容器down了,但是迁移到另一台主机还是可以正常使用
在这里插入图片描述

[root@docker1 ~]# tar zxf convoy-v0.5.2.tar.gz 
[root@docker1 ~]# cd convoy/
[root@docker1 convoy]# ls
convoy  convoy-pdata_tools  SHA1SUMS
[root@docker1 convoy]# mv convoy* /usr/local/bin/
[root@docker1 convoy]# cd
[root@docker1 ~]# mkdir -p /etc/docker/plugins/
[root@docker1 ~]# cd /etc/docker/
[root@docker1 docker]# ls
certs.d  daemon.json  key.json  plugins
[root@docker1 docker]# echo "unix:///var/run/convoy/convoy.sock" > 
-bash: syntax error near unexpected token `newline'
[root@docker1 docker]# echo "unix:///var/run/convoy/convoy.sock" > 
-bash: syntax error near unexpected token `newline'
[root@docker1 docker]# echo "unix:///var/run/convoy/convoy.sock" > /etc/docker/plugins/convoy.spec
[root@docker1 docker]# cat /etc/docker/plugins/convoy.spec
unix:///var/run/convoy/convoy.sock
[root@docker1 docker]# convoy daemon --drivers vfs --driver-opts vfs.path=/mnt/nfs &
[1] 9474
[root@docker1 docker]# DEBU[0000] Creating config at /var/lib/rancher/convoy    pkg=daemon
DEBU[0000]                                               driver=vfs driver_opts=map[vfs.path:/mnt/nfs] event=init pkg=daemon reason=prepare root=/var/lib/rancher/convoy
DEBU[0000]                                               driver=vfs event=init pkg=daemon reason=complete
DEBU[0000] Registering GET, /info                        pkg=daemon
DEBU[0000] Registering GET, /volumes/list                pkg=daemon
DEBU[0000] Registering GET, /volumes/                    pkg=daemon
DEBU[0000] Registering GET, /snapshots/                  pkg=daemon
DEBU[0000] Registering GET, /backups/list                pkg=daemon
DEBU[0000] Registering GET, /backups/inspect             pkg=daemon
DEBU[0000] Registering POST, /volumes/create             pkg=daemon
DEBU[0000] Registering POST, /volumes/mount              pkg=daemon
DEBU[0000] Registering POST, /volumes/umount             pkg=daemon
DEBU[0000] Registering POST, /snapshots/create           pkg=daemon
DEBU[0000] Registering POST, /backups/create             pkg=daemon
DEBU[0000] Registering DELETE, /volumes/                 pkg=daemon
DEBU[0000] Registering DELETE, /snapshots/               pkg=daemon
DEBU[0000] Registering DELETE, /backups                  pkg=daemon
DEBU[0000] Registering plugin handler POST, /Plugin.Activate  pkg=daemon
DEBU[0000] Registering plugin handler POST, /VolumeDriver.Create  pkg=daemon
DEBU[0000] Registering plugin handler POST, /VolumeDriver.Unmount  pkg=daemon
DEBU[0000] Registering plugin handler POST, /VolumeDriver.Path  pkg=daemon
DEBU[0000] Registering plugin handler POST, /VolumeDriver.Get  pkg=daemon
DEBU[0000] Registering plugin handler POST, /VolumeDriver.Capabilities  pkg=daemon
DEBU[0000] Registering plugin handler POST, /VolumeDriver.Remove  pkg=daemon
DEBU[0000] Registering plugin handler POST, /VolumeDriver.Mount  pkg=daemon
DEBU[0000] Registering plugin handler POST, /VolumeDriver.List  pkg=daemon

[root@docker1 docker]# ll /var/run/convoy/convoy.sock
srwxr-xr-x 1 root root 0 Nov 11 12:26 /var/run/convoy/convoy.sock

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值