docker - 如何将目录从远程主机复制到docker镜像

标签 docker containers dockerfile docker-image

我正在尝试构建一个 docker 镜像,我有包含所有必要命令的 dockerfile。但在我的构建步骤中,我需要将一个目录从远程主机复制到 docker 镜像。但是,如果我将 scp 命令放入 dockerfile,我还必须在 dockerfile 中提供密码,而我不必这样做。

任何人都有更好的解决方案来做到这一点。任何建议将不胜感激。

最佳答案

我想说至少有处理这个问题的选择:

选项 1: 如果您可以在运行 docker build 之前执行 scp,这可能是最简单的选择:

  1. 运行 scp -r somewhere:remote_dir ./local_dir
  2. COPY ./local_dir some_path 添加到您的 Dockerfile
  3. 运行docker build

选项 2:如果您必须在构建期间执行 scp:

  1. 开始一些键值存储,例如 etcd构建前
  2. 在键值存储中临时放置一个正确的 SSH key (不能用密码保护)
  3. 在单个 RUN 命令中(避免在图像中留下 secret ):
    • 从键值存储中检索 SSH key ;
    • 将其放入~/.ssh/id_rsa或启动一个ssh-agent并添加;
    • 使用scp获取目录
    • 删除 SSH key
  4. 从键值存储中删除键

第二个选项有点复杂,因此可能值得创建一个包装器脚本来检索所需的 secret 、运行任何命令并删除 secret 。

关于docker - 如何将目录从远程主机复制到docker镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38230915/

相关文章:

java - 谷歌应用程序引擎灵活环境部署失败,找不到文件

通过 HTTPS 进行的 Git 克隆在 Docker makefile 中不起作用

docker - 如何在不丢失更改的情况下停止/重新启动 docker 容器?

c++ - 在基本构造函数中初始化唯一指针的标准容器

docker - 如何安全管理 Google Cloud Run 部署的 creds.json

postgresql - IBM Bluemix 容器上的 Kubernetes 上的 Postgres

docker - 如何在 Azure Service Fabric 中为 docker 容器指定命令行参数

laravel - 使用 laradock 对 laravel 应用程序进行 Docker 化

docker - nuxt js应用程序将在本地构建并开始使用docker进行生产

macos - 映射端口,以便您可以从 OSX 主机访问 docker 运行的应用程序