[Docker]如何实现使用scp从文件系统任意位置向Docker镜像中复制文件

  众所周知,Docker镜像制作命令ADD和COPY,不能访问Dockerfile文件所在目录之外的路径,可是如果我想要从本机其他路径中,或者局域网主机中复制文件到镜像中怎么办?如果文件都复制到Dockerfile目录势必造成空间的浪费和主要是麻烦,当然你可以架设HTTP服务或者FPT服务,然后使用ADD命令。但是,作为怕麻烦的程序猿,我觉得这种方法都不能让我念头通达。于是,我想能否利用局域网中现有的ssh服务来实现这个目的呢? 因此,经过一凡研究搜索(当然重点是后面<( ̄︶ ̄)>),终于实现了这个小目!废话不多说,直接上代码:

COPY --chown=root:root ssh/id* /.ssh/
RUN ls -l /.ssh \
  && scp -o 'StrictHostKeyChecking no' -i /.ssh/id_rsa root@192.168.0.113:/home/user1/downloads/LibreOffice/LibreOffice*  /tmp \
  && rm /.ssh/id*

  稍微啰嗦一下,上述scp命令中,通过-o选项传递的 'StrictHostKeyChecking no' 含义为跳过让用户确认接受ssh主机的指纹。

posted @ 2022-06-13 12:01  柒零壹  阅读(1785)  评论(0编辑  收藏  举报