gpt4 book ai didi

docker - Docker 绑定(bind)挂载目录中的文件未更新

转载 作者:行者123 更新时间:2023-12-01 19:36:10 25 4
gpt4 key购买 nike

我正在使用 docker bind mount 来映射 Ubuntu 生成的主机 /dev/serial/ 文件夹(其中包含识别串行设备的符号链接(symbolic link),例如 /dev/ttyUSB0 )。我正在使用的完整 docker 容器运行命令是

docker run -d --restart always --privileged=true -v /dev/serial:/dev/serial DOCKER_IMAGE_NAME

第一次运行时效果很好,但是如果串行设备断开连接并重新连接,则会重新创建符号链接(symbolic link)。此更改不会传播到 docker 容器中,而是 docker 容器找到一个空的 /dev/serial 文件夹。我测试了在主机上以及此目录中的 docker 容器内手动创建一个文件,奇怪的是,在这两种情况下,其中一个文件的更改并未在另一个文件中更新。

音量显示为

{
"Type": "bind",
"Source": "/dev/serial",
"Destination": "/dev/serial",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}

编辑:Ubuntu 在 /dev/serial 文件夹下的两个目录中创建符号链接(symbolic link),by-pathby-id

最佳答案

绑定(bind)挂载基于 inode ,当文件被删除并重新创建时,绑定(bind)挂载就会被破坏。这些更改不会传播到绑定(bind)安装,直到容器重新启动,以便它选择新的 inode。

这种情况的解决方案(文件被删除并重新创建)是挂载父目录,因此在您的情况下,您可以使用 -v/dev:/dev 挂载。当然,这会将/dev 暴露给容器,因此请小心处理。

关于docker - Docker 绑定(bind)挂载目录中的文件未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53547973/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com