如何从另一台机器摄取泊坞窗容器中的文件?

我有一台生产文件的本地networking上的机器。 它不运行Docker,因为它是低功耗的单板计算机。 我已经写了一个Docker容器在服务器上运行,以获取这些文件,处理它们,然后吐出处理的文件。

我的问题是在从机器传输文件到Docker容器进行处理。 我想我会使用scp ,但它不工作,因为Docker容器不应该有sshd运行。

我没有看到使用Docker Volume的方法,生成要处理的文件的设备与运行Docker的主机是分开的。 因为生产者可以复制文件而不知道它是由Docker容器,虚拟机还是真实机器处理,所以scp会是一个干净的方法。

我现在有什么select? 我应该尝试通过(S)FTP还是HTTP(S)来做到这一点? 有没有更好的办法?

这可能是在docker容器中安装sshd然后使用scp的一个很好的情况。

不pipe你安装sshd,sftp,还是其他基于协议的文件传输服务,都没有太大区别,我不这么认为。

我可以看到的其他选项是让生成文件的计算机将它们发送到docker集装箱可以到达的地方。 也许是共享的networking文件夹。

docker集装箱可以直接安装networking驱动器,并通过安装文件夹获取文件。

如何NFS? 您可以在运行NFS服务器的当前服务器旁边运行第二个Docker容器,并安装一个卷来存储数据:

 docker volume create mydata docker run -d --privileged --restart=always \ -v mydata:/nfs \ -e NFS_EXPORT_DIR_1=/nfs \ -e NFS_EXPORT_DOMAIN_1=\* \ -e NFS_EXPORT_OPTIONS_1=ro,insecure,no_subtree_check,no_root_squash,fsid=1 \ -p 111:111 -p 111:111/udp \ -p 2049:2049 -p 2049:2049/udp \ -p 32765:32765 -p 32765:32765/udp \ -p 32766:32766 -p 32766:32766/udp \ -p 32767:32767 -p 32767:32767/udp \ fuzzle/docker-nfs-server:latest 

然后,通过安装相同的卷来获取第二个容器中的数据:

 docker run -d --name myingester -v mydata:/path/for/processing myingesterimage 

现在,您只需在数据生产者的一个文件夹上挂载NFS文件夹(使用Docker主机IP),数据将在卷中可用。

您可以稍后将其包装到一个docker-compose.yml文件中, docker-compose.yml部署它们(我将把这个练习放在你身边)。 我在https://hub.docker.com/r/fuzzle/docker-nfs-server/find的图像示例。 但是看起来好像还有很多其他的NFS服务器容器的例子。