
docker 里面有个配置想改一下,exec 进去后发现 vi/vim/nano 通通没有,请问这种情况还有啥文本编辑工具吗?
1 yuhr123 2019-07-04 14:58:20 +08:00 via iPhone 一,cp 进来 改 cp 回去 二,-v 做目录映射 |
2 no1xsyzy 2019-07-04 15:02:10 +08:00 ed? awk? 总之先 ls /bin 看一下吧 |
3 andyangyu 2019-07-04 15:03:54 +08:00 没有就 apt/yum/apk 装一个? |
4 guyeu 2019-07-04 15:05:22 +08:00 最好不要在 docker 里修改文件; 如果要修改的配置文件是从外部挂载进去的,直接去挂载点修改那个文件就可以; 如果要修改的配置文件是 docker 镜像里的,不要修改容器里的文件,因为销毁掉这个容器重启一个的话,之前的修改就会丢掉。确实需要修改,应该基于这个镜像自己 build 一个镜像去修改。 如果只是临时修改,那把外部的一个文件挂载到那个位置就可以了。 |
5 PerpetualHeng 2019-07-04 15:06:09 +08:00 1.不要在容器起来后做配置文件的修改,没有这么玩的。 2.提前准备一个你改好的配置文件,打镜像的时候,直接在镜像层面新的配置文件替换旧的配置文件就行了,然后启动。 3.不用配置文件,所有配置走环境变量,配置也等于提前放进容器。 |
6 moodasmood OP |
7 Alan1312 2019-07-04 15:20:28 +08:00 可以用 cat > /file_path << \EOF file content EOF |
8 youngxu 2019-07-04 15:22:34 +08:00 via Android echo xxx > xxx |
9 STRRL 2019-07-04 15:24:29 +08:00 我现在的做法是 搞个脚本 docker cp busybox 进去 然后 docker exec 开始改东西 然后删掉 busybox |
10 senghoo 2019-07-04 15:26:43 +08:00 虽然不建议用。执行: ``` docker inspect --format='{{.GraphDriver.Data.MergedDir}}' 容器 ID 或名字 ``` 会返回容里根目录对应的宿主机路径。 可以直接进去编辑。。 |
11 MilkShake 2019-07-04 15:29:19 +08:00 我建议挂载一个目录,把你要修改的文件,进行编写覆盖,然后重新启动容器就可以。 |
12 BCy66drFCvk1Ou87 2019-07-04 15:37:54 +08:00 via Android 能挂载目录的挂载目录,不行的只能进去安装 vim/nano 等编辑器直接改了,有时候还真得这么做,比如碰到一些无法挂载的文件如.sh |
13 limuyan44 2019-07-04 15:39:32 +08:00 via Android 挂载,楼上应该已经说完了 |
14 letitbesqzr 2019-07-04 5:46:25 +08:00 |
15 moodasmood OP @senghoo 是这样用的吗 docker inspect --format='{{.GraphDriver.Data.MergedDir}}' 434909d2327d, 返回 /var/lib/docker/overlay2/f14e714cac42380e004676d6622a84b853660c1a5f9a96e62c321fbca3d9f146/merged 但是目录不存在 |
16 senghoo 2019-07-04 16:39:18 +08:00 @moodasmood 你是用 docker for Mac 之类的吧。 如果是的话,docker for Mac 是在你 Mac 里跑一个虚拟机。 这个路径是虚拟机里的路径。所以可能用不了。 如果不是应该是你的容器没在运行? |
17 senghoo 2019-07-04 16:48:31 +08:00 @moodasmood 如果是 docker for Mac ``` screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty ``` 可以进入虚拟机的终端(可能路径稍微不一样。特别是 0 那个,应该是编号)。在进入到对应目录里, 虚拟机里没 vim,但是至少有 vi 可以用。 |
18 moodasmood OP @senghoo 确实是 mac,感谢 |
19 shawndev 2019-07-04 19:52:16 +08:00 不要问,问就是 VSCode Remote Development |
20 CivAx 2019-07-05 09:36:04 +08:00 如果这是你自己打 Dockerfile 建立的镜像,建议你自己维护一个 basic 镜像,在 basic 里面预先运行各类 RUN apt-get 命令装好需要的环境,然后再 FROM basic:0.1 |