在主机上chown docker卷(可能通过docker-compose)

Mor*_*eu5 6 chown docker docker-compose docker-volume

我有以下示例

version: '2'

services:
  proxy:
    container_name: proxy
    hostname: proxy
    image: nginx
    ports:
      - 80:80
      - 443:443
    volumes:
      - proxy_conf:/etc/nginx
      - proxy_htdocs:/usr/share/nginx/html

volumes:
  proxy_conf: {}
  proxy_htdocs: {}
Run Code Online (Sandbox Code Playgroud)

哪个工作正常.当我运行docker-compose up它时,创建那些命名的卷/var/lib/docker/volumes,一切都很好.但是,从主机,我只能/var/lib/docker以root身份访问,因为它root:root(有意义).我想知道是否有一种方法可以chown将主机的目录更加明智/安全(比如,我用来在主机上做大部分工作的相对无特权的用户),或者我是否只需要chown手动操作它们.我已经开始有许多脚本可以解决其他问题了,所以有一个额外的几行不会有太大的问题,但我真的想保持自编自动化最小化,如果我可以 - 减少愚蠢错误的机会.

顺便说一句,没有:如果我挂载主机目录而不是创建卷,它们会被覆盖,这意味着如果它们开始为空,它们将保持为空,并且我没有从容器内部获得默认配置(或其他任何内容).

额外点:我可以将卷移到更方便的位置吗?说,/home/myuser/myserverstuff/volumes

tha*_*tah 19

最好不要尝试/var/lib/docker直接访问内部文件.这些目录意味着由docker守护进程管理,而不是被搞乱.

要访问卷内的数据,有许多选项;

  • 使用绑定挂载的目录(您考虑过,但不适合您的用例).
  • 使用使用相同的体积,并使其通过该容器访问,例如运行的容器的"服务"容器ssh(使用scp)或SAMBA容器(如svendowideit /桑巴)
  • 使用卷驱动程序插件.各种各样的插件提供各种选择.例如,当地坚持插件是一个非常简单的插件,它允许你指定何处泊坞窗应存储的数据量(所以外/var/lib/docker)