docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > Docker复制文件到主机

从Docker容器复制文件到主机的四种方法

作者:1010n111

在使用Docker进行开发和部署时,有时需要将容器内生成的构建工件复制到主机上,例如,在持续集成服务器上使用Docker构建依赖项,而不希望在代理服务器上安装所有运行时和库,所以本文给大家介绍了从Docker容器复制文件到主机的四种方法

技术背景

在使用Docker进行开发和部署时,有时需要将容器内生成的构建工件复制到主机上。例如,在持续集成(CI)服务器上使用Docker构建依赖项,而不希望在代理服务器上安装所有运行时和库,这就需要将容器内构建的工件复制回主机。

实现步骤

方法一:使用docker cp命令

这是最直接的方法,可在容器运行或停止时使用。

# 示例:复制容器内的out_read.jpg文件到当前目录
sudo docker cp goofy_roentgen:/out_read.jpg .

方法二:使用docker create

此方法无需启动容器。

docker create --name dummy ubuntu
docker cp dummy:/etc/hosts ./hosts
docker rm -f dummy

方法三:挂载卷

通过挂载卷的方式,将容器内的文件复制到主机上。

mkdir artifacts
docker run -i -v ${PWD}/artifacts:/artifacts ubuntu:14.04 sh << COMMANDS
# 构建软件
cp <artifact> /artifacts
COMMANDS

方法四:使用BuildKit的--output选项(Docker 19.03及以上版本)

此方法可跳过创建容器和构建镜像的步骤。

DOCKER_BUILDKIT=1 docker build --target artifact --output type=local,dest=. .

核心代码

使用docker cp

docker cp <containerId>:/file/path/within/container /host/path/target

使用docker create

docker create --name dummy IMAGE_NAME
docker cp dummy:/path/to/file /dest/to/file
docker rm -f dummy

挂载卷

mkdir artifacts
docker run -i -v ${PWD}/artifacts:/artifacts ubuntu:14.04 sh << COMMANDS
# 构建软件
cp <artifact> /artifacts
COMMANDS

使用BuildKit的--output选项

DOCKER_BUILDKIT=1 docker build --target artifact --output type=local,dest=. .

最佳实践

docker run -i -v ${PWD}:/working_dir -w /working_dir -u $(id -u) \
    ubuntu:14.04 sh << COMMANDS
chown -R $(id -u):$(id -g) /working_dir/artifacts
COMMANDS

常见问题

docker cp 5f2371a7da7c:/home/euler/mfem/miniapps/navier/3dfoc /tmp/
mv /tmp/3dfoc ~/Downloads/

到此这篇关于从Docker容器复制文件到主机的四种方法的文章就介绍到这了,更多相关Docker复制文件到主机内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文