找回密码
 立即注册
首页 业界区 安全 电视盒子 Armbian Docker 安装部署 FileBrowser 并解决 ...

电视盒子 Armbian Docker 安装部署 FileBrowser 并解决权限问题

殳世英 2025-8-20 19:00:24
摘要


  • 介绍 FileBrowser 的基本知识和相关网站文档以及安装部署。通过日志分析错误,通过镜像和宿主机的信息定位错误,通过修改目录属性以解决权限问题,验证错误原因,列出挂载卷时的注意事项,对比指定用户和提升权限的区别。
背景说明

简介和功能


  • Armbian 系统是基于 Debian/Ubuntu 而构建的专门用于 ARM 芯片的轻量级 Linux 系统。
  • Docker 是开源的应用容器引擎,开发者可以打包应用以及依赖包到一个轻量级、可移植的容器中,能够将应用程序与基础架构分离,以便快速交付软件和运行应用程序软件。
  • FileBrowser 是自托管、开源的网页管理界面文件浏览器。可在指定的目录上传、下载、复制、移动、编辑、删除、预览和分享文件,支持文件多选。支持用户管理以及用户权限管理。
网站和文档


  • 官方网站: Home
  • 开源网站: GitHub
  • 镜像网站: DockerHub
  • 安装文档: Installation - File Browser
安装部署 (run)


  • 拉取镜像。执行 docker pull filebrowser/filebrowser 命令以从 DockerHub 镜像源拉取 FileBrowser 的镜像到本地,默认为 latest 标签。

  • 创建并启动容器。执行下列命令以指定参数创建并启动 FileBrowser 容器。
    1. 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 的用户对应的容器用户身份运行。


  • 查看镜像的 Image layers 信息。由下列指令可知,构建镜像时在容器中以 UID 为 1000 和 GID 为 1000 的用户身份,为 FileBrowser 容器创建了 /config、/database 和 /srv 三个目录。
    1. ENV UID=1000ENV GID=1000RUN RUN addgroup -g $GID user && adduser -D -u $UID -G user user # buildkitRUN 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://:8081 以打开 FileBrowser 文件浏览器的网页管理界面。其中  为安装部署 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”错误导致容器无法启动的问题 - 敲码拾光--编程开发者的百宝箱
本文作者:梦幻之心星
本文链接:https://www.cnblogs.com/Sky-seeker/p/19049396
版权声明:本文依据 CC BY-NC-SA 4.0 许可证进行授权,转载请附上原文出处链接及本声明。

关注微信公众号,即时获取文章推送;访问博客园网页,正常显示网址链接。

来源:豆瓜网用户自行投稿发布,如果侵权,请联系站长删除

相关推荐

您需要登录后才可以回帖 登录 | 立即注册