docker数据共享
原创大约 1 分钟
Docker官方给出的多台机器之间共享数据的结构图如下。

其实Docker的volume
是支持多种driver
的,但如果不指定,那么创建volume
时,它的driver
默认都是local
,也就是本地存储。
[
{
"CreatedAt": "202X-0X-XXT21:33:15+08:00",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/mysql-data/_data",
"Name": "mysql-data",
"Options": null,
"Scope": "local"
}
]
准备三台Linux机器,之间通过SSH
通信。
hostname | ip | ssh username | ssh password |
---|---|---|---|
docker-host1 | 172.16.200.10 | work | 123456 |
docker-host2 | 172.16.200.11 | work | 123456 |
docker-host3 | 172.16.200.12 | work | 123456 |
在docker-host1
和docker-host2
机器上安装一个插件:vieux/sshfs
。
[work@docker-host1 ~]> docker plugin install --grant-all-permissions vieux/sshfs
[work@docker-host2 ~]> docker plugin install --grant-all-permissions vieux/sshfs
在docker-host1
上创建数据卷。
[work@docker-host1 ~]> docker volume create --driver vieux/sshfs \
-o sshcmd=work@172.16.200.12:/home/work \
-o password=123456 \
sshvolume
在docker-host1
上查看数据卷。
[work@docker-host1 ~]> docker volume ls
DRIVER VOLUME NAME
vieux/sshfs:latest sshvolume
查看数据卷详情。
[work@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": "123456",
"sshcmd": "work@192.168.200.12:/home/work"
},
"Scope": "local"
}
]
在docker-host1
上创建容器,挂载sshvolume
到/app
目录,然后进入容器的shell
,在/app
目录创建一个test.txt
文件,并在其中输入一些内容。
[work@docker-host1 ~]> docker run -it -v sshvolume:/app busybox sh
/> 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> exit
这样就可以在docker-host3
上看到数据了。
[work@docker-host3 ~]> pwd
/home/work
[work@docker-host3 ~]> ls
test.txt
[work@docker-host3 ~]> more test.txt
this is ssh volume
感谢支持
更多内容,请移步《超级个体》。