【问题标题】:How to copy SSH from JENKINS host into a DOCKER container?如何将 SSH 从 JENKINS 主机复制到 DOCKER 容器中?
【发布时间】:2018-12-09 16:21:11
【问题描述】:

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

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


我也无法从 jenkins 作业中执行此操作,因为作业命令在 docker 容器的 shell 内运行,无法与父级(即 jenkins 主机)对话。


This jenkins plugin 本来可以救命,但正如第一部分所述:由于未解决的安全漏洞,此插件的分发已暂停。

【问题讨论】:

  • 您有可以使用的 VOLUME 吗?复制到主机服务器中的这个路径,然后在容器中运行另一个命令从这个 VOLUME 复制...我没有尝试但可以工作

标签: docker jenkins ssh


【解决方案1】:

这就是我使用 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 挂载到 Docker 的路径 /home/test

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

【讨论】:

  • 第二个解决方案有效,我将此作为参数添加到詹金斯管道中。
  • args '-v /path/to/.ssh:/home/userincontainer/.ssh'
猜你喜欢
  • 1970-01-01
  • 2021-10-25
  • 2020-10-22
  • 1970-01-01
  • 2014-05-19
  • 1970-01-01
  • 2014-03-29
相关资源
最近更新 更多