我无法使用Dockerfile将文件从主机复制到容器中,因为正如Docker文档中所述,我只是not allowed to:
路径必须在构建上下文内;你不能 COPY ../something / something,因为Docker构建的第一步 是将上下文目录(和子目录)发送到docker 守护程序。
我也无法从jenkins作业中执行此操作,因为job命令在docker容器的外壳中运行,因此无法与父级(即jenkins主机)进行通讯。
This jenkins plugin可能可以挽救生命,但正如第一节所述:由于未解决的安全漏洞,该插件的分发已被暂停。
答案 0 :(得分:2)
这是我使用Dockerfile将文件从主机复制到Docker映像的方式
我有一个名为 tomcat
的文件夹在那里面,我有一个tar file
和Dockerfile
仅出于了解目的而执行整个过程的命令
$ 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