我正在尝试构建一个docker镜像,我有所有必要命令的dockerfile。但在我的构建步骤中,我需要将一个目录从远程主机复制到docker镜像。但是如果我把scp命令放到dockerfile中,我也必须在dockerfile中提供密码,我不需要这样做。
任何人都有更好的解决方案来做到这一点。任何建议将不胜感激。
答案 0 :(得分:3)
我说至少有处理这个问题的方法:
选项1:
如果您可以在运行scp
之前执行docker build
,那么这可能是最简单的选择:
scp -r somewhere:remote_dir ./local_dir
COPY ./local_dir some_path
添加到Dockerfile docker build
选项2:如果您必须在构建期间执行scp
:
RUN
命令中(以避免在图像中留下秘密):
~/.ssh/id_rsa
或开始ssh-agent
并添加; scp
第二个选项有点复杂,所以可能值得创建一个包装脚本来检索所需的秘密,运行任何命令,并删除秘密。
答案 1 :(得分:0)
您可以在发布时间
将目录复制到(甚至正在运行的)容器中在远程计算机上:使用
从远程主机复制到docker主机 scp -r /your/dir/ <user-at-docker-host>@<docker-host>:/some/remote/directory
在泊坞机上:从泊坞主机复制到泊坞窗容器
docker cp /some/remote/directory <container-name>:/some/dir/within/docker/
当然,如果您只是通过简单地调整 scp 的源和目标,您也可以从您的docker机器执行第1步命令。