You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

非Root用户从主机访问容器文件系统及挂载容器目录方案

如何将容器内的/home目录挂载到主机/test目录

首先要明确:Docker原生只支持将主机路径挂载到容器内,反过来直接挂载容器路径到主机并没有内置的方法。不过我们可以通过sshfs工具实现实时挂载,满足你无需root访问overlay文件系统、避免复制的需求,具体操作如下:

容器内配置SSH服务

  • 假设你的容器ID或名称是my-container,先进入容器:
    docker exec -it my-container /bin/bash
    
  • 以Debian/Ubuntu系容器为例,更新软件源并安装openssh-server:
    apt update && apt install -y openssh-server
    
  • 为root用户设置密码(或创建普通用户,安全性更高):
    passwd root
    
  • 启动SSH服务:
    service ssh start
    

    注:如果是CentOS/RHEL系容器,安装命令为yum install -y openssh-server,启动命令为systemctl start sshd

获取容器IP地址

  • 在主机上执行以下命令,获取容器的IP:
    docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' my-container
    
    记下输出的IP(比如172.17.0.2),后续挂载会用到。

主机上安装并挂载

  • 安装sshfs工具(这一步仅需临时使用root权限执行一次,后续挂载无需root):
    sudo apt install sshfs  # 适用于Debian/Ubuntu
    # 或 sudo yum install sshfs  # 适用于CentOS/RHEL
    
  • 创建主机上的挂载目录(如果还未存在):
    mkdir -p /test
    
  • 执行挂载命令,将容器内的/home挂载到主机的/test:
    sshfs root@172.17.0.2:/home /test
    
    输入你刚才设置的容器root密码后,就能实时访问主机/test目录查看容器/home的内容了。

卸载挂载(可选)

  • 如果需要取消挂载,执行:
    fusermount -u /test
    

额外优化建议

  • 为了避免每次挂载都输入密码,可以配置SSH密钥登录:在主机生成密钥对,将公钥复制到容器的/root/.ssh/authorized_keys文件中,之后就能实现免密挂载。
  • 这种方法全程无需直接操作Docker的overlay文件系统,完全通过Docker命令和sshfs工具实现,既符合你无需root访问overlay的要求,也避免了复制文件的繁琐流程。

内容的提问来源于stack exchange,提问作者WinterS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:05:49