Docker:将数据从主机复制到已挂载的主机目录,以从运行中的容器访问数据

文森佐·皮(Vincenzo Pii)

我有一个正在运行的容器,其卷已安装到本地主机目录:

    "Mounts": [
        {
            "Source": "/var/lib/postgresql-9.5-docker",
            "Destination": "/var/lib/postgresql/data",
            "Mode": "",
            "RW": true,
            "Propagation": "rprivate"
        }
    ],

如果我想从主机向容器提供数据(例如,一个大的postgres转储),将文件直接从主机写入主机目录是否安全?

/var/lib/postgresql-9.5-docker/foo/

快速测试表明这是有效的(即,如果我对容器执行bash并检查的话,该文件在那里),但是数据一致性是否安全?

笔记:

我知道一个人也可以使用

docker cp /path/to/src <containerid>:/path/to/dest

但是在我的特定情况下,当从Ceph(rbd)挂载卷时,这不起作用。

马特

通过docker复制文件到主机目录将与您期望的主机文件系统一样一致。容器和主机之间有一个非常薄的层。

通过默认驱动程序使用Docker卷local还将提供类似的访问权限,因为这些卷也使用本地主机文件系统。

将文件复制到Docker容器文件系统中将取决于您使用docker运行存储驱动程序默认情况下,它是AUFS(很快将成为OverlayFS),因此在标准文件系统上还有一个附加层。我不希望它的一致性不太好,但是由于额外的层,出现问题或错误的机会更大,并且它的性能也不如本地文件系统。

从主机和容器访问

从容器中获得的一项功能是主机和容器之间的共享信息。您在容器中执行的所有操作实际上都在主机内核中进行。因此,如果您写锁定文件,则主机可以看到该文件。如果您有文件mmaped,那么它将共享主机的全局mmap空间。

从容器和主机访问或写入同一文件系统都可以。两者之间不会有差异或延迟。

写入同一文件或文件位置的多个进程将具有与任何多进程系统相同的约束。进程将需要使用文件锁定或互斥锁,否则可能会交错写入。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将文件从主机复制到Docker容器的工作目录

Dockerfile:将目录从Windows主机复制到Docker容器

如何将文件复制到Docker容器中的主机安装目录

将主机目录挂载到从Docker容器中运行的Docker容器中

将整个目录从容器复制到主机

将目录从容器复制到主机

Docker:将文件从Docker容器复制到主机

如何创建 Docker 运行时参数以在运行时将主机文件复制到容器中?

exec-maven-plugin - 将目录从 docker 容器复制到主机

将文件从 docker 容器复制到本地主机

将文件从Docker容器复制到主机

将文件从Bamboo用户/主机复制到Docker容器

使用 Dockerfile 将文件从 Docker 容器复制到主机

如何将文件从主机复制到Docker容器?

Docker将文件从主机复制到容器

将文件从主机复制到Docker容器

将文件从Docker容器复制到主机

无法将文件从Docker容器复制到主机

如何使用docker-py中的复制将文件从容器复制到主机

从Docker容器中的主机访问数据

将文件从主机复制到Docker容器,在Docker中的脚本中执行

如何将Docker容器中的目录挂载到主机?

如何将Docker容器中的目录挂载到主机?

如何将主机目录挂载到正在运行的Docker容器中

Docker,是否可以将主机数据复制到Docker卷?

Cuda:将主机数据复制到共享内存阵列

无法将文件从docker-compose挂载复制到主机

Docker如何将卷从Docker Client挂载到在Docker主机上运行的Docker容器中?

从Docker容器访问主机数据库