電視盒子 Armbian Docker 安裝部署 FileBrowser 并解決權限問題
摘要
- 介紹 FileBrowser 的基本知識和相關網站文檔以及安裝部署。通過日志分析錯誤,通過鏡像和宿主機的信息定位錯誤,通過修改目錄屬性以解決權限問題,驗證錯誤原因,列出掛載卷時的注意事項,對比指定用戶和提升權限的區別。
背景說明
簡介和功能
- Armbian 系統是基于 Debian/Ubuntu 而構建的專門用于 ARM 芯片的輕量級 Linux 系統。
- Docker 是開源的應用容器引擎,開發者可以打包應用以及依賴包到一個輕量級、可移植的容器中,能夠將應用程序與基礎架構分離,以便快速交付軟件和運行應用程序軟件。
- FileBrowser 是自托管、開源的網頁管理界面文件瀏覽器。可在指定的目錄上傳、下載、復制、移動、編輯、刪除、預覽和分享文件,支持文件多選。支持用戶管理以及用戶權限管理。
網站和文檔
- 官方網站: Home
- 開源網站: GitHub
- 鏡像網站: DockerHub
- 安裝文檔: Installation - File Browser
安裝部署 (run)
-
拉取鏡像。執行
docker pull filebrowser/filebrowser命令以從 DockerHub 鏡像源拉取 FileBrowser 的鏡像到本地,默認為latest標簽。

-
創建并啟動容器。執行下列命令以指定參數創建并啟動 FileBrowser 容器。
docker run -d -p 8081:80 \ -v /mnt/sdcard/docker/filebrowser/data:/srv \ -v /mnt/sdcard/docker/filebrowser/database:/database \ -v /mnt/sdcard/docker/filebrowser/config:/config \ --restart=always \ --name=filebrowser filebrowser/filebrowser
-
查看用戶日志。執行
docker logs filebrowser命令以通過查看 FileBrowser 的日志,獲取為admin用戶隨機生成的密碼,此密碼僅在首次運行時顯示。由日志內容可知,容器 FileBrowser 未能正常啟動運行并顯示錯誤信息。

分析原因
-
原因歸類。日志中的錯誤信息
cp: can't create '/config/settings.json': Permission denied表明為權限錯誤。 -
查看鏡像的 Dockerfile details 信息。
- 默認情況下,Docker 容器中的進程以
root用戶身份運行。 - 在 FileBrowser 的 Dockerfile 中,已通過設置 Docker 容器的
ENV環境變量,指定容器中的進程以宿主機中UID為1000和GID為1000的用戶對應的容器用戶身份運行。

- 默認情況下,Docker 容器中的進程以
-
查看鏡像的 Image layers 信息。由下列指令可知,構建鏡像時在容器中以
UID為1000和GID為1000的用戶身份,為 FileBrowser 容器創建了/config、/database和/srv三個目錄。ENV UID=1000 ENV GID=1000 RUN RUN addgroup -g $GID user && adduser -D -u $UID -G user user # buildkit RUN RUN mkdir -p /config /database /srv && chown -R user:user /config /database /srv && chmod +x /healthcheck.sh # buildkit
-
查看宿主機目錄的屬性。執行
ls -al /mnt/sdcard/docker/filebrowser命令以查看 Docker 為 FileBrowser 容器在宿主機創建的目錄的屬性。 -
查看宿主機目錄的所有者的 ID。執行
id root命令以通過查看root用戶的信息來獲取root用戶的 ID 號。 -
查看容器用戶的 ID 對應的宿主機用戶。執行
cat /etc/passwd | grep 1000命令以通過查看系統用戶信息配置文件來獲取在容器中UID為1000的用戶對應的宿主機用戶。

解決問題
-
修改宿主機目錄的所有者。執行
chown -vR seek:seek /mnt/sdcard/docker/filebrowser命令以修改 Docker 為 FileBrowser 容器在宿主機創建的目錄及其子目錄的所有者為seek用戶。 -
確認宿主機目錄的屬性。執行
ls -al /mnt/sdcard/docker/filebrowser命令以查看 Docker 為 FileBrowser 容器在宿主機創建的目錄的屬性。

-
重啟 FileBrowser 容器。執行
docker restart filebrowser命令以重啟 Docker 中的 FileBrowser 容器。 -
查看日志。執行
docker logs filebrowser命令以查看 FileBrowser 的日志。由日志內容可知,容器已經正常啟動,并在初始化時為 admin 用戶隨機生成密碼后開始運行。

-
驗證錯誤原因。
- 查看容器目錄的屬性。執行
docker exec filebrowser ls -al命令以查看在 Docker 的 FileBrowser 容器中,/config、/database和/srv三個目錄的屬性。 - 查看運行容器的用戶身份。執行
docker exec filebrowser id命令以通過查看當前登錄用戶的信息,獲取在 Docker 中運行 FileBrowser 容器的用戶身份。

- 查看容器目錄的屬性。執行
-
打開網頁管理界面。訪問
http://<host>:8081以打開 FileBrowser 文件瀏覽器的網頁管理界面。其中<host>為安裝部署 FileBrowser 的主機的 IP 地址或域名。用戶名為admin,密碼為之前隨機生成的密碼。

注意事項
- 在創建并啟動容器時使用
-v參數指定掛載卷。如果宿主機中的指定目錄不存在,Docker 會自動以root用戶身份創建指定的目錄,而不是使用運行容器的用戶身份創建指定的目錄。 - 在創建并啟動容器時使用
-v參數指定掛載卷,需要注意宿主機和容器的對應目錄的所有者和權限是否正確匹配。 - 在創建并啟動容器時使用
-u參數指定用戶,是指定的用戶身份,而不是用戶權限。 - 在創建并啟動容器時使用
--privileged參數提升權限,是提升為root權限,而不是root身份。提權有安全風險,慎用!
參考資料
- Installation - File Browser
- Docker Dockerfile | 菜鳥教程
- Image Layer Details - filebrowser/filebrowser:latest | Docker Hub
- 如何在 Docker 中處理權限? | LabEx
- 解決Docker掛載目錄權限問題:提升容器訪問權限的實用技巧 - 云原生實踐
- 解決Docker顯示“permission denied”錯誤導致容器無法啟動的問題 - 敲碼拾光--編程開發者的百寶箱
本文作者:夢幻之心星
本文鏈接:http://www.rzrgm.cn/Sky-seeker/p/19049396
版權聲明:本文依據 CC BY-NC-SA 4.0 許可證進行授權,轉載請附上原文出處鏈接及本聲明。
![]()
關注微信公眾號,即時獲取文章推送;訪問博客園網頁,正常顯示網址鏈接。

浙公網安備 33010602011771號