2016-01-27 108 views
0

我一直在找docker幾個小時;我將Windows 8.1作爲主機運行,並將VirtualBox與boot2docker一起運行。Docker(NGINX,PHP,mySQL)和Windows - 文件權限

這是我的搬運工,compose.yml:

mysql: 
    image: mysql 
    ports: 
     - "6603:3306"  
    environment: 
     MYSQL_ROOT_PASSWORD: mysql 
     MYSQL_USER: mysql 
fpm: 
    image: php:7.0.2-fpm 
    volumes: 
     - /c/Users/Administrator/www:/var/www/html 
    ports: 
     - "9000:9000" 
    links: 
     - mysql 
nginx: 
    image: nginx 
    ports: 
     - "80:80" 
     - "443:443" 
    volumes: 
     - /c/Users/Administrator/www:/var/www/html 
    links: 
     - fpm 

這工作正常(我可以去我的碼頭工人的IP地址,看看nginx的歡迎頁面);儘管當我運行mkdir(例如通過php)時,它會給出有關Windows權限的錯誤。

回答

0

,您應該使用volumes標籤,而不是volumes_from

  • volumes可以安裝從主機目錄容器 和
  • volumes_from坐騎其他服務或容器目錄

請看docker-compose file documentation

而你的搬運工,撰寫文件應該是這樣的:

fpm: 
    image: php:7.0.2-fpm 
    volumes: 
     - /c/Users/Administrator/www:/var/www/html 
    ports: 
     - "9000:9000" 
    links: 
     - mysql 
nginx: 
    image: nginx 
    ports: 
     - "80:80" 
     - "443:443" 
    volumes_from: 
     - fpm 
    links: 
     - fpm 
+0

拼寫錯誤;它實際上是實際的數量。 - 儘管如此,仍然沒有解決權限問題。 – JuLiAnc

+0

你會得到什麼錯誤? –

+0

沒有權限創建目錄 – JuLiAnc

0

這是Windows文件系統與VirtualBox的虛擬機共享方式的限制,使用VirtualBox的客戶添置。

與VirtualBox虛擬機共享的文件由虛擬機內的用戶「docker」和組「staff」擁有。 VM(和容器)內部的進程不能改變這些文件的所有權。

作爲解決方法,您可以嘗試將這些容器作爲與這些文件相同的uid/gid--user 1000:50)運行;

-u, --user=""     Username or UID (format: <name|uid>[:<group|gid>]) 

--ulimit = [] ULIMIT選項

也有一個在GitHub上的問題跟蹤是提到了一些變通的懸而未決的問題; #581 Only root can write to OSX volumes/Can't change permissions within

+0

我會試試看,謝謝:) – JuLiAnc

+0

我們可以參考'--user'參數的用法嗎?據我現在碼頭將有用戶映射從v1.10 –

+0

這是一個不同的功能;用戶命名空間將允許您重新映射根用戶守護進程範圍內(而不是每個容器)。 '--user'功能在Docker中已經有一段時間了。我將添加一個指向文檔的鏈接 – thaJeztah