美文网首页DockerLinuxdocker
三十一、Docker存储-多个机器之间的容器共享数据

三十一、Docker存储-多个机器之间的容器共享数据

作者: InsaneLoafer | 来源:发表于2021-12-18 16:02 被阅读0次

多个机器之间的容器共享数据

multi-host-volume

官方参考链接 https://docs.docker.com/storage/volumes/#share-data-among-machines

Docker的volume支持多种driver。默认创建的volume driver都是local

$ docker volume inspect vscode
[
    {
        "CreatedAt": "2021-06-23T21:33:57Z",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/vscode/_data",
        "Name": "vscode",
        "Options": null,
        "Scope": "local"
    }
]

这一节我们看看一个叫sshfs的driver,如何让docker使用不在同一台机器上的文件系统做volume

环境准备

准备三台Linux机器,之间可以通过SSH相互通信。

hostname ip ssh username ssh password
docker-host1 192.168.200.10 vagrant vagrant
docker-host2 192.168.200.11 vagrant vagrant
docker-host3 192.168.200.12 vagrant vagrant

安装plugin

在其中两台机器上安装一个plugin vieux/sshfs

[vagrant@docker-host1 ~]$ docker plugin install --grant-all-permissions vieux/sshfs
latest: Pulling from vieux/sshfs
Digest: sha256:1d3c3e42c12138da5ef7873b97f7f32cf99fb6edde75fa4f0bcf9ed277855811
52d435ada6a4: Complete
Installed plugin vieux/sshfs
[vagrant@docker-host2 ~]$ docker plugin install --grant-all-permissions vieux/sshfs
latest: Pulling from vieux/sshfs
Digest: sha256:1d3c3e42c12138da5ef7873b97f7f32cf99fb6edde75fa4f0bcf9ed277855811
52d435ada6a4: Complete
Installed plugin vieux/sshfs

创建volume

[vagrant@docker-host1 ~]$ docker volume create --driver vieux/sshfs \
                          -o sshcmd=vagrant@192.168.200.12:/home/vagrant \
                          -o password=vagrant \
                          sshvolume

查看

[vagrant@docker-host1 ~]$ docker volume ls
DRIVER               VOLUME NAME
vieux/sshfs:latest   sshvolume
[vagrant@docker-host1 ~]$ docker volume inspect sshvolume
[
    {
        "CreatedAt": "0001-01-01T00:00:00Z",
        "Driver": "vieux/sshfs:latest",
        "Labels": {},
        "Mountpoint": "/mnt/volumes/f59e848643f73d73a21b881486d55b33",
        "Name": "sshvolume",
        "Options": {
            "password": "vagrant",
            "sshcmd": "vagrant@192.168.200.12:/home/vagrant"
        },
        "Scope": "local"
    }
]

创建容器挂载Volume

创建容器,挂载sshvolume/app目录,然后进入容器的shell,在/app目录创建一个test.txt文件

[vagrant@docker-host1 ~]$ docker run -it -v sshvolume:/app busybox sh
Unable to find image 'busybox:latest' locally
latest: Pulling from library/busybox
b71f96345d44: Pull complete
Digest: sha256:930490f97e5b921535c153e0e7110d251134cc4b72bbb8133c6a5065cc68580d
Status: Downloaded newer image for busybox:latest
/ #
/ # ls
app   bin   dev   etc   home  proc  root  sys   tmp   usr   var
/ # cd /app
/app # ls
/app # echo "this is ssh volume"> test.txt
/app # ls
test.txt
/app # more test.txt
this is ssh volume
/app #
/app #

这个文件我们可以在docker-host3上看到

[vagrant@docker-host3 ~]$ pwd
/home/vagrant
[vagrant@docker-host3 ~]$ ls
test.txt
[vagrant@docker-host3 ~]$ more test.txt
this is ssh volume

相关文章

  • 三十一、Docker存储-多个机器之间的容器共享数据

    多个机器之间的容器共享数据[https://dockertips.readthedocs.io/en/latest...

  • 6、Docker数据管理

    在生产环境中使用Docker,往往需要对数据进行持久化,或者需要在多个容器之间进行数据共享,这必然涉及容器的数据管...

  • Docker容器的数据管理

    在使用Docker的过程中,往往需要对数据进行持久化,或者需要在多个容器之间进行数据共享,这必然涉及容器的数据管理...

  • docker数据管理(6)

    生产环境中使用docker的过程中,往往需要对数据进行持久化,或者需要在多个容器之间进行数据共享,这必然涉及容器的...

  • Docker(四) 存储卷

    docker存储卷 数据卷 为什么需要数据卷(存储卷)docker镜像由多个只读层叠加而成,启动容器时,docke...

  • Docker5-操作 Docker 容器

    生产环境中使用 Docker 的过程中, 往往需要对数据进行持久化, 或者需要在多个容器之间进行数据共享, 这必然...

  • 六、数据卷管理

    拷贝数据到容器中 docker的数据卷实现持久化存储 volume实现容器和宿主机数据共享 在容器启动时,通过-v...

  • volume和bind mount 优缺点

    Volume特点: • 多个运行容器之间共享数据。 • 当容器停止或被移除时,该卷依然存在。 • 多个容器可以同时...

  • docker 容器互联

    docker 容器互联 docker 容器互联总结的是在同一台宿主机上,多个 docker 容器文件共享和网络互联...

  • 2.1docker数据管理

    一:数据拷贝 二:数据卷和使用 数据卷:宿主机的存储目录, 要将目录中的数据和docker容器进行数据共享 三:数...

网友评论

    本文标题:三十一、Docker存储-多个机器之间的容器共享数据

    本文链接:https://www.haomeiwen.com/subject/euwcfrtx.html