Docker容器中文件与本地相互复制拷贝方式
前言
遇到一些问题需要将docker内的容器拷贝到本地同时举一反三将本地文件或者文件夹拷贝到容器中的方法
这里主要讲解方法,故一法通万法通
先上结果
# 本地到服务器 docker cp 本地路径 容器id或者容器名字:容器内路径 # 服务器到本地 docker cp 容器id或者容器名字:容器内路径 本地路径
首先您既然看到了我的博客就说明我们要走一走正常的路,而不是在CSDN或者其他论坛甚至百度上面肆意驰骋试错,我们首先打开Docker官网

然后我们鼠标在Developers上悬停之后点击Docs 接下来我们就进入到了docker docs,也可以直接进入这个网站

然后我们需要在搜索栏中敲入我们想查询的东西,大家都是程序猿所以复制嘛很通俗的单词copy
这里我们会发现检索出来了很多东西,我们只需要找到我们想用的就好了

英语不是很好的话可以通过chrome的翻译功能,我就不是很好我们可以发现

我们成功找到了位置

重点
接下来我们要对这段话进行翻译
Extended descriptionCopy files/folders between a container and the local filesystem
Use ‘-‘ as the source to read a tar archive from stdin and extract it to a directory destination in a container. Use ‘-‘ as the destination to stream a tar archive of a container source to stdout.
扩展说明:
在容器和本地文件系统之间复制文件/文件夹 使用“-”作为源从标准输入读取 tar 存档并将其解压缩到容器中的目录目标。使用“-”作为将容器源的 tar 存档流式传输到标准输出的目标。
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|- # 解读命令 CONTAINER:SRC_PATH => 表示前面是容器:后面是容器的 # 解读命令 DEST_PATH => 本地路径 # 至于-的意思在上述文字中表述股这里不做赘述
如果没有tar的情况可以直接用
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH # 解读命令 CONTAINER:SRC_PATH => 表示前面是容器:后面是容器的 # 解读命令 DEST_PATH => 本地路径
测试!!!(因为在学习zookeeper这里用zookeeper作为例子)
下方的shell不做任何解释解释都在下方shell的# 后面的注释中了,我想偷懒嗯嗯不想整理了(没用“-”的原因是因为我没有tar
# 首先查看是否有我想要复制的文件,这里面是没有的 root@azang405:/# ls azang_data dev lib libx32 mnt root srv tmp bin etc lib32 lost+found opt run swapfile usr boot home lib64 media proc sbin sys var # 将zookeeper中的zkCLi.sh复制出来 root@azang405:/# docker cp my-zookeeper:/apache-zookeeper-3.7.0-bin/bin/zkCli.sh / # 这里会发现他出现了在第一排最后一个位置成功! root@azang405:/# ls azang_data etc lib64 mnt run sys zkCli.sh bin home libx32 opt sbin tmp boot lib lost+found proc srv usr dev lib32 media root swapfile var # 我们先创建一个测试用的azang文件夹 root@azang405:/# mkdir azang # 现在本地中查看是否创建成功 root@azang405:/# ls azang dev lib32 media root swapfile var azang_data etc lib64 mnt run sys zkCli.sh bin home libx32 opt sbin tmp boot lib lost+found proc srv usr root@2c82c6d0750e:/apache-zookeeper-3.7.0-bin/bin# ls README.txt zkCli.cmd zkEnv.cmd zkServer-initialize.sh zkServer.sh zkSnapShotToolkit.sh zkSnapshotComparer.sh zkTxnLogToolkit.sh zkCleanup.sh zkCli.sh zkEnv.sh zkServer.cmd zkSnapShotToolkit.cmd zkSnapshotComparer.cmd zkTxnLogToolkit.cmd #接下来我们进行复制 root@azang405:/# docker cp /azang my-zookeeper:/apache-zookeeper-3.7.0-bin/bin/ # 重新查看 容器内部这里我们可以找到azang文件夹 root@2c82c6d0750e:/apache-zookeeper-3.7.0-bin/bin# ls README.txt zkCleanup.sh zkCli.sh zkEnv.sh zkServer.cmd zkSnapShotToolkit.cmd zkSnapshotComparer.cmd zkTxnLogToolkit.cmd azang zkCli.cmd zkEnv.cmd zkServer-initialize.sh zkServer.sh zkSnapShotToolkit.sh zkSnapshotComparer.sh zkTxnLogToolkit.sh
这里从容器中复制到容器外部不做演示
重复一下结果
# 本地到服务器 docker cp 本地路径 容器id或者容器名字:容器内路径 # 服务器到本地 docker cp 容器id或者容器名字:容器内路径 本地路径
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
低版本Docker升级高版本Docker的详细教程及成功避坑
如果我们使用docker来管理容器,那么保持docker引擎的更新将会是十分重要的,下面这篇文章主要给大家介绍了关于低版本Docker升级高版本Docker的详细教程及成功避坑,文中通过图文介绍的非常详细,需要的朋友可以参考下2023-05-05
docker容器内要启动两个进程时Dockerfile的实现代码
这篇文章主要介绍了docker容器内要启动两个进程时Dockerfile的实现代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-11-11
利用 trap 在 docker 容器优雅关闭前执行环境清理的方案
这篇文章主要介绍了利用 trap 在 docker 容器优雅关闭前执行环境清理的问题,需要在容器的启动脚本中,加入 trap 指令,来完成容器在退出前需要做的所有事情,本文通过脚本示例给大家介绍的非常详细,需要的朋友参考下吧2021-12-12
Docker实现将镜像从1.2GB压缩到200MB的优化指南
作为一名在容器化领域摸爬滚打多年的开发者,深知Docker镜像大小对生产环境的影响,本文将详细记录优化历程,从问题分析到解决方案实施,从理论原理到实战技巧,感兴趣的小伙伴可以了解下2025-09-09


最新评论