上次遇到一个紧急的调整bug的事情,自己也懒得复制粘贴,看看有没有cp的参数。 结果man docker的文档居然是有复制文件到docker 容器的方式。 这篇文章里面我会把知道的方法都写出来。
这两天写了一个通用的配置文件监控重载的后端程序,非常适合在docker环境下用。 它可以实现在分布式的架构下,指定哪个节点重载更新配置或则是xx的操作。 可以很方便的通过配置来调整系统的一个状态。系统是支持系统发送的signal信号接收,如果是跨实体机的话,我会考虑做一层rpc对于信号的处理,保证了信号的接收。 这样基本保证了当前任务的完成,不会丢失当前正在丢失的任务。
还是说句废话,原文是在 http://xiaorui.cc/2015/04/12/docker容器和主机如何互相拷贝传输文件/ 请到主站查看,内容以后会有所更新的。 http://xiaorui.cc
第一个方法是官方比较推荐的,其实和最后那种方法实现是一样的。docker cp的方法实现也是把文件推到容器里的aufs文件系统里:
docker cp <containerId>:/file/path/within/container /host/path/target
docker cp d8f7c83ba660:/data/buzzMaster/spider.log . vim spider.log du -sh spider.log 68M spider.log
第二种方法,需要你docker run 创建容器的时候,就需要指定挂载的目录
docker run -v /xiaorui.cc/to/hostdir:/mnt $container
这样你在系统中就可以看到然后外挂在里的目录了,直接copy就可以了。
还有一个方法,算是比较麻烦的。
A. 获取容器名称或者id :
$ docker ps
B. 获取整个容器的id,其实键盘tag就可以补全的。
$ docker inspect -f ‘{{.Id}}’ 步骤A获取的名称或者id
C. 在主机上拷贝文件到docker里面:
$ sudo cp path-file-host /var/lib/docker/devicemapper/mnt/<<容器的id>>/rootfs/root
下面我给大家演示下….
[ruifengyun@bj-buzz-docker01 ~]docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 57993c2471bc 不告你:41231/spider_online:v0.0.5 "/data/buzzMaster/en 2 days ago Up 2 days spider20 448e741cdb6b 不告你:41231/spider_online:v0.0.5 "/data/buzzMaster/en 2 days ago Up 2 days spider19 9505a638cb1f 不告你:41231/spider_online:v0.0.5 "/data/buzzMaster/en 2 days ago Up 2 days spider18 383800c434b3 不告你:41231/spider_online:v0.0.5 "/data/buzzMaster/en 2 days ago Up 2 days spider17 bfe2d0b00cb1 不告你:41231/spider_online:v0.0.5 "/data/buzzMaster/en 2 days ago Up 2 days spider16 e3255ccc5ac1 不告你:41231/spider_online:v0.0.5 "/data/buzzMaster/en 2 days ago Up 2 days spider15 5be3dc938f9a 不告你:41231/spider_online:v0.0.5 "/data/buzzMaster/en 2 days ago Up 2 days spider14 7805ae24a801 不告你:41231/spider_online:v0.0.5 "/data/buzzMaster/en 2 days ago Up 2 days spider13 f5f25012689f 不告你:41231/spider_online:v0.0.5 "/data/buzzMaster/en 2 days ago Up 2 days spider12 329ef2257dd2 不告你:41231/spider_online:v0.0.5 "/data/buzzMaster/en 2 days ago Up 2 days spider11 4c0c070b784e 不告你:41231/spider_online:v0.0.5 "/data/buzzMaster/en 2 days ago Up 2 days spider10 849f79258890 不告你:41231/spider_online:v0.0.5 "/data/buzzMaster/en 2 days ago Up 2 days spider09 8c142ff53611 不告你:41231/spider_online:v0.0.5 "/data/buzzMaster/en 2 days ago Up 2 days spider08 c3b3f9a01b23 不告你:41231/spider_online:v0.0.5 "/data/buzzMaster/en 2 days ago Up 2 days spider07 0d2fa89a2538 不告你:41231/spider_online:v0.0.5 "/data/buzzMaster/en 2 days ago Up 2 days spider06 49337b923fa8 不告你:41231/spider_online:v0.0.5 "/data/buzzMaster/en 2 days ago Up 2 days spider05 072251336c58 不告你:41231/spider_online:v0.0.5 "/data/buzzMaster/en 2 days ago Up 2 days spider04 ee5bbe952e04 不告你:41231/spider_online:v0.0.5 "/data/buzzMaster/en 2 days ago Up 2 days spider03 21d29ecd8bd6 不告你:41231/spider_online:v0.0.5 "/data/buzzMaster/en 2 days ago Up 2 days spider02 d8f7c83ba660 不告你:41231/spider_online:v0.0.5 "/data/buzzMaster/en 2 days ago Up 2 days spider01 [ruifengyun@bj-buzz-docker01 ~] docker inspect -f '{{.Id}}' spider01 d8f7c83ba660e6d874e3571bbc27ba701fbbb317d4acab80793fde53192ac96e [ruifengyun@bj-buzz-docker01 ~][ruifengyun@bj-buzz-docker01 ~] echo xiaorui.cc > xiaorui.cc [ruifengyun@bj-buzz-docker01 ~]$ cat xiaorui.cc xiaorui.cc [root@bj-buzz-docker01 ruifengyun]# cp xiaorui.cc /var/lib/docker/devicemapper/mnt/d8f7c83ba660e6d874e3571bbc27ba701fbbb317d4acab80793fde53192ac96e/rootfs/root [root@bj-buzz-docker01 ruifengyun]# docker exec -it d8f7c83ba660e6d874e3571bbc27ba701fbbb317d4acab80793fde53192ac96e cat /root/xiaorui.cc xiaorui.cc [root@bj-buzz-docker01 ruifengyun]#
然并卵