Docker中没有vi命令无法编辑文件问题解决
在docker环境中,往往没有安装 vi/vim/nano 等编辑命令。这导致编辑文件显示得比较繁琐,以下列举几种常见的处理方法。
通过复制容器内数据进行修改
复制容器内的文件到宿主机,命令如下:
# docker cp 容器id:容器内路径 宿主机路径 docker cp mysql:/yyzmain/main.txt .
重新复制新的文件到容器内
# docker cp 宿主机路径 容器id:容器内路径 docker cp ./main.txt mysql:/root/yyzmain/
在容器中安装vim命令
再容器中安装额外的命令,会造成不必要的资源消耗,因此被不推荐
进入容器,以mysql容器为例,命令如下:
# docker exec -it 容器ID bash docker exec -it mysql bash
安装vim命令
直接执行如下命令安装vim
apt-get install vim
若安装vim报如下错误
Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package vi
则更新软件包,执行如下命令
apt-get update
直接挂载目录
Docker中使用 -v 或 --volume 参数可以将宿主机的目录挂载到容器内部。-v 参数的格式为:
-v <宿主机目录>:<容器目录>
例如安装mysql的如下命令:
docker run -p 3306:3306 --name mysql \
-v /yyzmain/mysql:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=yyzmain \
-d mysql:5.7
其中的-v /yyzmain/mysql:/var/lib/mysql
会将宿主机上的 /yyzmain/mysql 目录挂载到容器内部的 /var/lib/mysql目录
-v 参数常见的用法有:
将宿主机目录挂载到容器内,用于数据共享、配置文件管理等。
存储容器数据,当容器删除时,宿主机目录中的数据不会删除。
在宿主机上直接操作容器内的数据,无需进入容器。
将本地代码目录挂载到容器中,实现代码的实时同步和开发调试。
挂载宿主机的配置文件目录到容器中,实现容器配置的自定义。
挂载宿主机的日志目录,实现容器日志的持久化存储。
需要注意:
目录权限问题,可能需要调整目录的属主属组。
如果挂载的目录为空,Docker 会自动给它填充内容。
使用绝对路径而不是相对路径挂载,更清晰明确。