如何将来自不同服务器的卷添加到我的docker-compose文件中

时间:2019-01-16 19:59:30

标签: docker docker-compose

我要设置一个由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服务并访问其中的文件。

1 个答案:

答案 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

docker-compose设置

volumes:
  - type: volume
    driver: vieux/sshfs
    source: sshvolume
    target: /target