如何从外部服务器访问/提取数据到Docker容器?

我遇到了越来越多的使用Docker容器的数据科学家,以便进行可重复的分析。

问题:如何将数据下载/拖放到Docker容器中?

如果数据可以通过URL下载,自然可以在Dockerfile中添加这样的一行

wget www.server_to_data.org/path/path/myfile.gz 

但是我有坐在服务器上的数据,用户用~/.ssh/id_rsa.pub的密钥对ssh进入服务器。 我不确定这是如何安全地工作。

在这种情况下,如何正常下载或访问您的数据?

可以挂载服务器,但我不确定在Container / VM中如何访问这些服务器。

对于您目前的情况,您已经获得了服务器上的数据,并且将密钥对分发给应该有权访问的人员。 如果您只想使用现有的基础架构而不改变它。 可以通过为图像中的ssh密钥设置音量来完成,然后运行图像的用户需要启动音量设置为ssh密钥的容器。

使用Dockerfile在图像中设置一个卷:

 FROM ubuntu #[RUN your installation process] VOLUME /home/container_user/.ssh 

运行容器并将ssh密钥的位置安装到该卷上:

 docker run -d -v PATH_TO_DRECITORY_HOLDING_SSH_KEY:/home/container_user/.ssh [OTHER OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...] 

然后,您可以下载数据作为容器启动时运行的脚本的一部分。

基本的想法是从我如何获得我的〜/ .ssh键到本地运行的docker容器?

也就是说,如果我们稍微回顾一下问题,并询问人们将如何使用您的图像,图像将存储在哪里(公共或私人回购)以及数据更改的频率可能会有更多的用户友好的方式来满足需求。 另外,如果您允许docker-compose作为容器的运行方式,还可以使用其他一些选项。