docker没有vi不能执行yum报Device or resource busy

最近在使用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

终于解决了。

posted @ 2022-11-23 16:23  熊仔其人  阅读(1255)  评论(0编辑  收藏  举报