为了开发,我想在我的 CoreOS VM 内从我的 Windows 开发箱中挂载一个文件共享,这样我就可以将该卷挂载到容器内。
CoreOS 似乎不支持这样做,并且没有附带包管理器;它的想法只是作为容器的极简主机。
$ cat /proc/filesystems
nodev sysfs
nodev rootfs
nodev ramfs
nodev bdev
nodev proc
nodev cgroup
nodev cpuset
nodev tmpfs
nodev devtmpfs
nodev debugfs
nodev securityfs
nodev sockfs
nodev pipefs
nodev devpts
nodev hugetlbfs
nodev pstore
nodev mqueue
nodev autofs
ext3
ext2
ext4
我可以摆弄容器并从容器内部挂载它,但我无法通过 Dockerfiles 和入口点脚本进行设置;而且这种方法感觉很不靠谱:容器不应该担心数据存储在哪里,它们只需要一个卷。在生产中,我将使用 AWS 存储或 Azure 存储等,因此我必须针对不同的主机修改我的映像,而且我不能使用官方映像。
是的,我百分之九十九确定我需要将它安装在 CoreOS 主机内,但不知道该怎么做。
答案1
容器的基本原则是它们应该便携的和完全独立。它不应该具有任何特定于环境的外部依赖关系(例如特定的网络共享)。
您不应在 CoreOS 中创建容器,而应在可以访问网络共享的专用构建主机上构建容器。然后,应将容器所需的所有文件封装在容器或卷容器中,并使用 docker 注册表推送到 CoreOS。
CoreOS 并不是真正为开发工作而设计的。它旨在用于部署。您可能会发现 vagrant 提供了更好的工作流程,因为它可以在主机和客户机之间挂载卷。
答案2
我意识到这个问题是近十年前提出的,但对于像我一样偶然发现这个问题的人来说:
现代的Fedora Core操作系统在其虚拟化映像中内置了主机文件共享功能。例如,vmware 映像附带 open-vm-tools,可以使用 vmhgfs-fuse 挂载。
我发现这种设置非常适合在 VM 容器中运行无头“开发服务器”,同时从主机上的 IDE 编辑文件。