您如何 access/pull 将来自外部服务器的数据放入 Docker 容器中?

How do you access/pull data from an outside server into a Docker container?

我已经 运行 了解越来越多使用 Docker 容器的数据科学家,以便进行可重现的分析。

问题:如何将 download/pull 数据放入 Docker 容器中?

如果可以通过 URL 下载数据,您自然可以在 Docker 文件

中添加这样一行
wget www.server_to_data.org/path/path/myfile.gz

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

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

可以安装服务器,但我不确定如何在 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...]

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

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

就是说,如果我们稍微支持这个问题并询问人们将如何使用您的图像、图像将存储在哪里(public 或私人存储库)以及多久使用一次数据变化可能会有一些更用户友好的方式来满足需求。此外,如果您允许 docker-compose 成为容器 运行 的方式,则还有一些其他选项可供您使用。