暴露安装在docker容器内的保险丝

暴露安装在docker容器内的保险丝

我正在尝试运行一个用于安装 hubic(在线存储)的 docker 镜像并将其公开给主机

到目前为止,有效的是容器正确安装保险丝点(至/mnt/hubic

运行 docker 时,我尝试使用卷映射运行,因为/path/on/host:/mnt/hubic这似乎可行(即,如果目录不存在,docker 会创建目录),但内容永远不会出现。如果我进入容器,我可以看到来自在线存储的文件,但主机文件夹不包含任何内容

我是否缺少一个选项来允许 Docker 执行此操作?

我用来启动容器的命令

docker run -v ~/.hubicfuse:/root/.hubicfuse -v /tmp/mounted:/mnt/hubic --device /dev/fuse --cap-add SYS_ADMIN --security-opt apparmor:unconfined -it {container_name}

答案1

解决方案来自帖子 s3 安装在容器内部,如何向主机公开?

这篇文章描述了一种使用的解决方案glusterFS,需要容器拥有更多权限。使用的 docker 命令:

docker run --cap-add SYS_ADMIN --device fuse -v host_mount_dir:container_mount_dir:shared IMAGE COMMAND

对于“路径 /foo 已挂载在 /foo 上,但它不是共享挂载...”之类的错误,原因是 docker 守护程序在与 systemd 不同的挂载命名空间中运行。这是使其在同一个命名空间中运行的解决方案:

mkdir -p /etc/systemd/system/docker.service.d/
cat <<EOF > /etc/systemd/system/docker.service.d/clear_mount_propagation_flags.conf
[Service]
MountFlags=shared
EOF

并重新启动docker守护进程。

需要注意的是,如果挂载到 绑定的目录中,则挂载在主机上可见-v

相关内容