我要设置一个由dokcer组成的文件,并想访问另一个服务器上的docker卷。如何在docker-compose文件中指定该外部卷?
我尝试在docker-compose文件中使用driver_opts,但是没有运气。我总是会收到此错误:
错误:对于api无法启动服务api:装载卷'/ var / lib / docker / volumes / data-api-media'时出错:装载带有选项的错误:type =''device ='remote-path 'o ='addr = 。 。 。 ,rw':无此类设备
通过外部,我得到:
已将卷data-api-media声明为外部卷,但找不到。请使用
docker volume create --name=data-api-media
手动创建该卷,然后重试。
版本:“ 3.4” 服务: api: 建立:。 入口点: -./docker-entrypoint.sh 数量: -数据API媒体:/ usr / src / app / media / 端口: -“ 1095:1095” 数量: 数据API媒体: driver_opts: o:“ addr = 。 。 。 ,rw” 设备:远程路径
我希望将来自其他服务器的外部docker卷挂载到我的docker-compose服务并访问其中的文件。
答案 0 :(得分:0)
您可以在主机上通过docker volume创建vieux/sshfs插件并映射到其他主机。
使用docker volume create创建卷时,或者启动使用尚未创建的卷的容器时,可以指定卷驱动程序。以下示例使用vieux / sshfs卷驱动程序,首先在创建独立卷时使用,然后在启动创建新卷的容器时使用。
此示例假定您有两个节点,其中第一个是Docker主机,并且可以使用SSH连接到第二个节点。
在Docker主机上,安装vieux / sshfs插件:
$ docker plugin install --grant-all-permissions vieux/sshfs
使用卷驱动程序创建卷 此示例指定了SSH密码,但是如果两个主机都配置了共享密钥,则可以省略该密码。每个卷驱动程序可能具有零个或多个可配置选项,每个选项都使用-o标志指定。
$ docker volume create --driver vieux/sshfs \
-o sshcmd=test@node2:/home/test \
-o password=testpassword \
sshvolume
volumes:
- type: volume
driver: vieux/sshfs
source: sshvolume
target: /target