Linux

Docker 無法訪問卷

  • July 16, 2015

我安裝了全新的 Fedora Server 22。在安裝過程中,我選擇了預安裝 Docker 的選項。我已經使用 Cockpit 啟動了 Docker 並在命令行上安裝了一個新容器:

# docker run -d -h plex --name="plex" -v /etc/docker/plex:/config -v /tank:/data -p 32400:32400 timhaak/plex

嘗試執行它時出現錯誤:

+ GROUP=plextmp
+ mkdir -p /config/logs/supervisor
mkdir: cannot create directory ‘/config/logs’: Permission denied

我檢查了容器詳細資訊:

...
"Volumes": {
   "/config": "/etc/docker/plex",
   "/data": "/tank"
...
"VolumesRW": {
   "/config": true,
   "/data": true
...

並且目錄存在:

# file /etc/docker/plex
/etc/docker/plex: directory

一切似乎都很好。

起初我認為容器本身有問題,所以我也嘗試了其他容器。我遇到了同樣的問題。他們無法創建文件夾或文件(有時甚至不讀取它們)。在 docker 文件(“管理容器中的數據”)中有一個非常簡單的範例,可以創建一個新容器,該容器只需打開一個 shell 並從主機安裝一個卷:

# docker run --rm -it -v /etc/docker/test:/vol ubuntu /bin/bash

嘗試觸摸 /test 中的文件會導致權限被拒絕錯誤。

有什麼我想念的嗎?

在我的具體情況下,問題出在 SELinux 上。將其設置為“允許”後,我就可以使用容器了。

(可能不是最好的解決方案,但在我相應地設置 SELinux 權限之前有效)

更新:這是 Dan Walsh 的一篇簡短部落格文章,指出使用 Docker Volumes 和 SELinux 可能出現的問題:

http://www.projectatomic.io/blog/2015/06/using-volumes-with-docker-can-cause-problems-with-selinux/

引用自:https://serverfault.com/questions/705631