谷歌云存储桶安装到docker服务

我正在尝试实现以下内容:

我想在本地将我的Docker swarm工作人员安装一个谷歌存储桶作为文件系统。 所有的群体工作者都有必要的访问权限的谷歌存储API。

存储桶安装在实例创build中。

之后,在部署服务时,该服务应该能够写入存储桶。

目标:

该服务应该能够在标签组内的任何工作人员上运行。 R / Wlocking不是问题。 该服务只运行一次。

我宁愿不从容器内安装桶,因为我想尽量减less开销和容器的大小。

问题:

我可以在本地访问,读写文件系统。

但是,当容器试图写入挂载的文件系统时,我可以从日志中看到它不能(权限被拒绝)

我已经试图检查是否是docker swarm的问题,或者不能在特权模式下运行容器,但是当我以特权模式在本地运行容器时,相同的行为会增加。

我想知道是否有办法以这种方式实现我的目标,或者如果我需要重新考虑不将桶直接安装在容器内。

Docker-Version 17.03.1-ce

docker信息

Server Version: 17.03.1-ce Storage Driver: overlay2 Backing Filesystem: extfs Supports d_type: true Native Overlay Diff: true Logging Driver: json-file Cgroup Driver: cgroupfs Plugins: Volume: local Network: bridge host macvlan null overlay Swarm: active NodeID: wcq01hi8zfzofs6elnxdfswm9 Is Manager: false Node Address: 10.132.16.15 Manager Addresses: 10.132.16.2:2377 10.132.16.3:2377 10.132.16.4:2377 Runtimes: runc Default Runtime: runc Init Binary: docker-init containerd version: 4ab9917febca54791c5f071a9d1f404867857fcc runc version: 54296cf40ad8143b62dbcaa1d90e520a2136ddfe init version: 949e6fa Security Options: apparmor seccomp Profile: default Kernel Version: 4.8.0-32-generic Operating System: Ubuntu 16.10 OSType: linux Architecture: x86_64 CPUs: 2 Total Memory: 1.755 GiB Name: persistent-worker-8rrl ID: 4H6O:BBPD:ZMSE:OKWE:QZQS:P5BT:CXFH:VAG5:MNDU:A5ZM:V2O5:TKQH Docker Root Dir: /var/lib/docker Debug Mode (client): false Debug Mode (server): false Registry: https://index.docker.io/v1/ WARNING: No swap limit support Experimental: false Insecure Registries: 127.0.0.0/8 Live Restore Enabled: false 

服务创build参数

 docker service create \ --constraint 'node.labels.availability == persistent' \ --mount type=bind,source=/mnt/storage-bucket/jenkins,destination=/var/jenkins_home \ --name jenkins \ --replicas=1 \ jenkinsci/jenkins 

运行命令

 sudo docker run \ --privileged \ --volume /mnt/storage-bucket/jenkins:/var/jenkins_home \ -d \ jenkinsci/jenkins 

我想出了自己的想法,并认为我会分享,以防有人面临相同或类似的问题。

jenkins-container(又名jenkins)中使用的用户无法访问本地安装的存储桶。 我find了两个可能的解

  1. 使用jenkins容器内的root用户(不漂亮)
  2. 将桶直接安装在容器内

现在,我不确定我将使用哪个解决scheme,因为我对任何一个都不满意。 很显然,以root身份运行jenkins并不是一个好的解决scheme,但我也不想在提供给互联网的容器中提供Google-API访问键。