如何将SSH从JENKINS主机复制到DOCKER容器?

时间:2018-12-09 16:21:11

标签: docker jenkins ssh

我无法使用Dockerfile将文件从主机复制到容器中,因为正如Docker文档中所述,我只是not allowed to

  

路径必须在构建上下文内;你不能   COPY ../something / something,因为Docker构建的第一步   是将上下文目录(和子目录)发送到docker   守护程序。


我也无法从jenkins作业中执行此操作,因为job命令在docker容器的外壳中运行,因此无法与父级(即jenkins主机)进行通讯。


This jenkins plugin可能可以挽救生命,但正如第一节所述:由于未解决的安全漏洞,该插件的分发已被暂停。

1 个答案:

答案 0 :(得分:2)

这是我使用Dockerfile将文件从主机复制到Docker映像的方式

我有一个名为 tomcat

的文件夹

在那里面,我有一个tar fileDockerfile

仅出于了解目的而执行整个过程的命令

$ pwd
/home/user/Documents/dockerfiles/tomcat/

$ ls
apache-tomcat-7.0.84.tar.gz  Dockerfile

示例Docker文件:

FROM ubuntu_docker
COPY apache-tomcat-7.0.84.tar.gz /home/test/
...

Docker命令:

$ docker build -it testserver .

$ docker run -itd --name test1  testserver

$ docker exec -it bash

现在您位于Docker容器中

# ls
apache-tomcat-7.0.84.tar.gz

如您所见,我能够将apache-tomcat-7.0.84.tar.gz从主机复制到Docker容器。

通知您共享的Docker文档第一行

  

路径必须在构建的上下文中;

只要在构建过程中路径可访问,就可以复制。

另一种方法是使用音量

docker run -itd -v $(pwd)/somefolder:/home/test  --name test1  testserver

注意 -v 参数

您正在告诉Docker将Current_Directory/somefolder挂载到/home/test上Docker的路径上

一旦容器启动并运行,您只需将任何文件复制到$(pwd)/somefolder,它将被复制 位于/home/test

的容器中