CentOS7上で動かしているdocker(ownCloud)でボリュームにNASを使いたいのでcifsを使えるというnetshareプラグインを設定してみる。
公式によるとDebian/Ubuntu以外はバイナリ入れるかgoでコンパイルしろとのこと。
コンパイルしようとしたらgo getの段階でおこられた。
go get github.com/ContainX/docker-volume-netshare # github.com/ContainX/docker-volume-netshare/netshare/drivers ../../../go/src/github.com/ContainX/docker-volume-netshare/netshare/drivers/ceph.go:44: undefined: volume.Response ../../../go/src/github.com/ContainX/docker-volume-netshare/netshare/drivers/ceph.go:68: undefined: volume.Response ../../../go/src/github.com/ContainX/docker-volume-netshare/netshare/drivers/cifs.go:76: undefined: volume.Response ../../../go/src/github.com/ContainX/docker-volume-netshare/netshare/drivers/cifs.go:128: undefined: volume.Response ../../../go/src/github.com/ContainX/docker-volume-netshare/netshare/drivers/driver.go:23: undefined: volume.Response ../../../go/src/github.com/ContainX/docker-volume-netshare/netshare/drivers/driver.go:23: undefined: volume.Request ../../../go/src/github.com/ContainX/docker-volume-netshare/netshare/drivers/driver.go:47: undefined: volume.Response ../../../go/src/github.com/ContainX/docker-volume-netshare/netshare/drivers/driver.go:47: undefined: volume.Request ../../../go/src/github.com/ContainX/docker-volume-netshare/netshare/drivers/driver.go:61: undefined: volume.Response ../../../go/src/github.com/ContainX/docker-volume-netshare/netshare/drivers/driver.go:61: undefined: volume.Request ../../../go/src/github.com/ContainX/docker-volume-netshare/netshare/drivers/driver.go:61: too many errors
リファクタリング派手にしてこわれているまま?(こちら)
数日後にフォークして修正したと同じスレッドに書き込まれていた。(自分では未コンパイル)
バイナリをダウンロードすることに変更
wget https://github.com/ContainX/docker-volume-netshare/releases/download/v0.34/docker-volume-netshare_0.34_linux_amd64-bin
sudo mv docker-volume-netshare_0.34_linux_amd64-bin /usr/bin/docker-volume-netshare
chmod 755 /usr/bin/docker-volume-netshare
chown root:root /usr/bin/docker-volume-netshare
動くこと確認
docker-volume-netshare -h docker-volume-netshare (NFS V3/4, AWS EFS and CIFS Volume Driver Plugin) Provides docker volume support for NFS v3 and 4, EFS as well as CIFS. This plugin can be run multiple times to support different mount types. == Version: 0.34 - Built: 2017-05-29T13:06:34-07:00 == Usage: docker-volume-netshare [command] Available Commands: ceph run plugin in Ceph mode cifs run plugin in CIFS mode efs run plugin in AWS EFS mode nfs run plugin in NFS mode version Display current version and build date Flags: --basedir string Mounted volume base directory (default "/var/lib/docker-volumes/netshare") --port string TCP Port if --tcp flag is true. :PORT for all interfaces or ADDRESS:PORT to bind. (default ":8877") --tcp Bind to TCP rather than Unix sockets. Can also be set via NETSHARE_TCP_ENABLED --verbose Turns on verbose logging Use "docker-volume-netshare [command] --help" for more information about a command.
LAN内でNASに無制限アクセスできる場合は(参考:Launching in Samba/CIFS modeあたり)
sudo docker-volume-netshare cifs --domain ドメイン名(windowsだとWORKGROUPとかになってるやつ)
で、docker用にボリュームマウントしておいて
docker run -it --volume-driver=cifs -v CIFSのパス):/mount ubuntu /bin/bash
とdockerを起動してやる。cifsのパスは先頭の//が不要なので注意。
これで、動くみたいだけどこのままだとサーバ再起動のたびにマウントしなくてはいけないので、Systemdに登録しておく。
長くなったのでこちら