Coreos mount cifs or sshfs or any other networked file system

cifscoreossshfsstorage

For development I want to mount a file share from my windows dev box inside my CoreOS VM, so I can then mount that volume inside a container.

CoreOS doesn't appear to support doing this, and comes with no package manager; the idea being it is only a minimalist host for containers.

$ 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

I can mess around with the container and mount it from within the container but I was having trouble getting that setup via Dockerfiles and entrypoint scripts; also that approach feels hacky: Containers shouldn't worry about where the data is stored, they just ask for a volume. In production I'd be using AWS storage or Azure storage, etc, so I'd have to modify my images for different host AND i can't use the official images.

So yeah I'm 99 percent sure I need to mount it within the CoreOS host, but don't know how to do it.

Best Answer

The fundamental principles of containers is that they should be portable and completely self contained. It should not have any external dependencies that are environment specific, (like a specific network share).

Instead of making your container inside CoreOS, you should build your container on a dedicated build host which has access to the network share. All files that are needed by the container should then be encapsulated inside the container, or a volume container and pushed to CoreOS using the docker registry.

CoreOS isn't really meant for development work. It is meant to be used for deployments. You may find vagrant gives a better workflow since it can mount volumes between the host and the guest.

Related Topic