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 1
最好不要在 docker 里修改文件;
如果要修改的配置文件是从外部挂载进去的,直接去挂载点修改那个文件就可以; 如果要修改的配置文件是 docker 镜像里的,不要修改容器里的文件,因为销毁掉这个容器重启一个的话,之前的修改就会丢掉。确实需要修改,应该基于这个镜像自己 build 一个镜像去修改。 如果只是临时修改,那把外部的一个文件挂载到那个位置就可以了。 |
5
PerpetualHeng 2019-07-04 15:06:09 +08:00
1.不要在容器起来后做配置文件的修改,没有这么玩的。
2.提前准备一个你改好的配置文件,打镜像的时候,直接在镜像层面新的配置文件替换旧的配置文件就行了,然后启动。 3.不用配置文件,所有配置走环境变量,配置也等于提前放进容器。 |
6
moodasmood OP |
7
yoohwzy 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 4
虽然不建议用。执行:
``` docker inspect --format='{{.GraphDriver.Data.MergedDir}}' 容器 ID 或名字 ``` 会返回容里根目录对应的宿主机路径。 可以直接进去编辑。。 |
11
aaa5838769 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 15: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 1
@moodasmood 你是用 docker for Mac 之类的吧。
如果是的话,docker for Mac 是在你 Mac 里跑一个虚拟机。 这个路径是虚拟机里的路径。所以可能用不了。 如果不是应该是你的容器没在运行? |
17
senghoo 2019-07-04 16:48:31 +08:00 1
@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
|