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

时间:2017-12-12 23:38:09

标签: docker dockerfile ssh-keys

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

问题:如何将数据下载/拉入Docker容器?

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

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

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

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

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

1 个答案:

答案 0 :(得分:1)

对于您目前的情况,您已经在服务器上获取了数据,并且您将密钥对分发给应该有权访问的人。如果您只想使用现有基础架构而不更改它。可以通过为映像中的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...]

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

基本想法取自How can I get my ~/.ssh keys into a docker container running locally?

也就是说,如果我们稍微回答一下这个问题并询问人们将如何使用您的图像,图像将被存储(公共或私人仓库)以及数据更改的频率可能会有所增加。一些更方便用户满足需求的方式。此外,如果您允许docker-compose作为运行容器的方式,那么您还可以使用其他一些选项。