最近在使用docker的过程中发现一个问题,就是想用vim编辑器编辑一个文件,发现连vi都没有。
于是想到一个办法用docker cp
来解决问题:
首先执行docker ps -a
查看容器的id
然后再执行复制命令
将容器c77b9da2d02d的/etc/hosts
文件(我是想临时指定域名解析)拷贝到主机的/tmp目录中:
docker cp c77b9da2d02d:/etc/hosts /tmp
在容器外面编辑保存后,将主机/tmp/hosts文件拷贝到容器c77b9da2d02d的/etc目录下:
docker cp /tmp/hosts c77b9da2d02d:/etc/
然后报错:
Error response from daemon: Error processing tar file(exit status 1): unlinkat /etc/hosts: device or resource busy
解决办法
这个时候我想到了echo命令来操作文件。
进入容器:
docker exec -it 96f7f14e99ab /bin/bash
再执行以下命令:
echo "127.0.0.1 test.www.com" >> /etc/hosts
即可向/etc/hosts文件添加内容。
然后又碰到新的问题,如何删除一行?
删除文档的第一行 sed -i '1d' /etc/hosts
删除文档的最后一行 sed -i '$d' /etc/hosts
如果还是报错
看来还是得用echo命令了:
echo "$(sed 's/127.0.0.1 test.www.com//g' /etc/hosts)" > /etc/hosts
终于解决了。
标签:tmp,busy,resource,c77b9da2d02d,vi,echo,etc,hosts,docker From: https://www.cnblogs.com/xiongzaiqiren/p/16918733.html