通常来讲,容器为了更小,是不会带编辑器的,但是,利用docker cp 命令copy出来,编辑后再copy进去显得又比较麻烦,于是:
上一个简单的脚本:docker-vim
1 2 3 4 5 6 7 8 9 10 |
#!/bin/bash cname=$1 file=${2#/} pid=$(docker inspect -f '{{.State.Pid}}' $cname) [[ $pid == "" ]] && { echo $0 only use for running container; exit; } cd /proc/$pid/root vim $file |
用法:
1 |
docker-vim $contaner-name $file-in-container |
注意:
- 脚本中没有直接vim /proc/$pid/root/$file ,因为这个可以read到文件内容,但是write会失败; 所以,先cd到/proc/$pid/root ,再vim $file 这样是正常的
- 该方法 仅适用于运行这的容器,(通常这可能并不是问题),可能有更好的编辑文件的办法
- 将容器文件系统挂载到宿主机的某个位置
- 让容器动态挂载一个有编辑器程序的volume
- 做一个非常简易的无依赖的编辑器程序copy到容器里面