我正在考虑使用Docker在持续集成(CI)服务器上构建依赖关系,这样我就不必在代理本身上安装所有运行时和库。
为了实现这一点,我需要将容器内部构建的构建工件复制回主机。这可能吗?
我正在考虑使用Docker在持续集成(CI)服务器上构建依赖关系,这样我就不必在代理本身上安装所有运行时和库。
为了实现这一点,我需要将容器内部构建的构建工件复制回主机。这可能吗?
当前回答
docker cp containerId:source_path destination_path
containerId可以从docker ps-a命令获得
源路径应该是绝对的。例如,如果应用程序/服务目录从docker容器中的应用程序开始,则路径为/app/some_directory/file
示例:docker cp d86844abc129:/app/server/output/server-test.png C:/Users/someone/Desktop/output
其他回答
在主机系统(容器外部)上创建一个数据目录,并将其装载到容器内部可见的目录中。这将文件放置在主机系统上的已知位置,并使主机系统中的工具和应用程序可以轻松访问文件
docker run -d -v /path/to/Local_host_dir:/path/to/docker_dir docker_image:tag
您不需要使用docker run。
你可以用docker create来完成。
从文档中:
docker create命令在指定的映像上创建一个可写容器层,并为运行指定的命令做好准备。然后将容器ID打印到STDOUT。这与docker run-d类似,只是容器从未启动。
因此,您可以做到:
docker create --name dummy IMAGE_NAME
docker cp dummy:/path/to/file /dest/to/file
docker rm -f dummy
在这里,您永远不会启动容器。这看起来对我有利。
docker cp[选项]SRC_PATH容器:DEST_PATH
DEST_PATH必须预先存在
如果您需要一个小文件,可以使用此部分
Docker容器内部
docker运行-it-p 4122:4122<container_ID>
nc -l -p 4122 < Output.txt
主机
nc 127.0.0.1 4122 > Output.txt
我为任何使用Docker for Mac的人发布这个。这就是对我有用的:
$ mkdir mybackup # local directory on Mac
$ docker run --rm --volumes-from <containerid> \
-v `pwd`/mybackup:/backup \
busybox \
cp /data/mydata.txt /backup
注意,当我使用-v装载时,会自动创建备份目录。
我希望有一天这对某人有用