【问题标题】:Docker mounting /tmp/pulseaudio gives errorDocker 安装 /tmp/pulseaudio 给出错误
【发布时间】:2021-07-26 14:50:06
【问题描述】:

我正在尝试让我的 docker 容器发出声音。我正在使用 Ubuntu 20.10 开发 Raspberry4。

启动容器时,我使用以下几行来挂载声音文件文件夹:

-v /tmp/pulseaudio.socket:/tmp/pulseaudio.socket
-v /tmp/pulseaudio.client.conf:/etc/pulse/client.conf

但是,我收到以下错误:

docker:来自守护进程的错误响应:OCI 运行时创建失败: container_linux.go:367:启动容器进程导致: process_linux.go:495:容器初始化导致:rootfs_linux.go:60: 将“/tmp/pulseaudio.socket”安装到rootfs “/var/lib/docker/overlay2/cde617898e2ee8e181a48cf84db8dbcdf5bfdf57e5760493f7c5fce1640b59d5/merged/tmp/pulseaudio.socket” 引起:不是目录:未知:您是否正在尝试挂载目录 到文件上(反之亦然)?检查指定的主机路径是否存在 并且是预期的类型。

我该如何解决这个问题?

【问题讨论】:

    标签: docker ubuntu audio pulseaudio


    【解决方案1】:

    您似乎正在尝试将主机中不存在的内容挂载到 docker 中存在的文件中。

    在这种情况下,行为是(参见here):

    如果您使用 -v 或 --volume 绑定挂载 Docker 主机上尚不存在的文件或目录,-v 将为您创建端点。它总是被创建为一个目录。

    所以 docker 会在宿主机中创建一个文件夹并尝试将其挂载到容器中的一个文件中,这就是你报错的原因。

    要修复它,您只需要检查文件是否存在于主机中,在您的情况下为/tmp/pulseaudio.socket,也可能还有/tmp/pulseaudio.client.conf

    请注意,-v 左侧路径是主机,右侧是容器。

    -v /path/in/host:/path/in/container
    

    【讨论】:

    • /tmp/pulseaudio.socket 文件夹存在于主机中。我只是想将它绑定到 docker 中的相同路径,但它指向 /var/lib/docker/overlay2/cde617898e2ee8e181a48cf84db8dbcdf5bfdf57e5760493f7c5fce1640b59d5/merged/tmp/pulseaudio.socket,这就是我猜的错误原因。
    猜你喜欢
    • 2019-03-08
    • 1970-01-01
    • 2018-12-22
    • 2017-11-24
    • 2022-11-10
    • 1970-01-01
    • 2022-11-11
    • 2019-02-06
    • 2018-01-29
    相关资源
    最近更新 更多