docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > Docker容器中文件与本地相互复制拷贝

Docker容器中文件与本地相互复制拷贝方式

作者:社畜阿藏405

这篇文章主要介绍了Docker容器中文件与本地相互复制拷贝方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

前言

遇到一些问题需要将docker内的容器拷贝到本地同时举一反三将本地文件或者文件夹拷贝到容器中的方法

这里主要讲解方法,故一法通万法通

先上结果

# 本地到服务器
docker cp 本地路径 容器id或者容器名字:容器内路径

# 服务器到本地
docker cp 容器id或者容器名字:容器内路径 本地路径

首先您既然看到了我的博客就说明我们要走一走正常的路,而不是在CSDN或者其他论坛甚至百度上面肆意驰骋试错,我们首先打开Docker官网

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

然后我们需要在搜索栏中敲入我们想查询的东西,大家都是程序猿所以复制嘛很通俗的单词copy

这里我们会发现检索出来了很多东西,我们只需要找到我们想用的就好了

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

我们成功找到了位置

重点

接下来我们要对这段话进行翻译

Extended description

Copy 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或者容器名字:容器内路径 本地路径

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

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