docker 里面用什么命令修改配置文件? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
moodasmood
V2EX    程序员

docker 里面用什么命令修改配置文件?

  •  
  •   moodasmood 2019-07-04 14:55:42 +08:00 14113 次点击
    这是一个创建于 2348 天前的主题,其中的信息可能已经有所发展或是发生改变。

    docker 里面有个配置想改一下,exec 进去后发现 vi/vim/nano 通通没有,请问这种情况还有啥文本编辑工具吗?

    20 条回复    2019-07-05 09:36:04 +08:00
    yuhr123
        1
    yuhr123  
       2019-07-04 14:58:20 +08:00 via iPhone
    一,cp 进来 改 cp 回去
    二,-v 做目录映射
    no1xsyzy
        2
    no1xsyzy  
       2019-07-04 15:02:10 +08:00
    ed? awk?
    总之先 ls /bin 看一下吧
    andyangyu
        3
    andyangyu  
       2019-07-04 15:03:54 +08:00
    没有就 apt/yum/apk 装一个?
    guyeu
        4
    guyeu  
       2019-07-04 15:05:22 +08:00   1
    最好不要在 docker 里修改文件;
    如果要修改的配置文件是从外部挂载进去的,直接去挂载点修改那个文件就可以;
    如果要修改的配置文件是 docker 镜像里的,不要修改容器里的文件,因为销毁掉这个容器重启一个的话,之前的修改就会丢掉。确实需要修改,应该基于这个镜像自己 build 一个镜像去修改。
    如果只是临时修改,那把外部的一个文件挂载到那个位置就可以了。
    PerpetualHeng
        5
    PerpetualHeng  
       2019-07-04 15:06:09 +08:00
    1.不要在容器起来后做配置文件的修改,没有这么玩的。
    2.提前准备一个你改好的配置文件,打镜像的时候,直接在镜像层面新的配置文件替换旧的配置文件就行了,然后启动。
    3.不用配置文件,所有配置走环境变量,配置也等于提前放进容器。
    moodasmood
        6
    moodasmood  
    OP
       2019-07-04 15:14:56 +08:00
    @PerpetualHeng
    @guyeu

    道理我都懂,但是平时开发用的,自己 build 或者挂载太麻烦了呀,自己进去改一行完事,多方便[捂脸]
    Alan1312
        7
    Alan1312  
       2019-07-04 15:20:28 +08:00
    可以用

    cat > /file_path << \EOF
    file content
    EOF
    youngxu
        8
    youngxu  
       2019-07-04 15:22:34 +08:00 via Android
    echo xxx > xxx
    STRRL
        9
    STRRL  
       2019-07-04 15:24:29 +08:00
    我现在的做法是 搞个脚本 docker cp busybox 进去
    然后 docker exec 开始改东西
    然后删掉 busybox
    senghoo
        10
    senghoo  
       2019-07-04 15:26:43 +08:00   4
    虽然不建议用。执行:

    ```
    docker inspect --format='{{.GraphDriver.Data.MergedDir}}' 容器 ID 或名字
    ```

    会返回容里根目录对应的宿主机路径。 可以直接进去编辑。。
    MilkShake
        11
    MilkShake  
       2019-07-04 15:29:19 +08:00
    我建议挂载一个目录,把你要修改的文件,进行编写覆盖,然后重新启动容器就可以。
    BCy66drFCvk1Ou87
        12
    BCy66drFCvk1Ou87  
       2019-07-04 15:37:54 +08:00 via Android
    能挂载目录的挂载目录,不行的只能进去安装 vim/nano 等编辑器直接改了,有时候还真得这么做,比如碰到一些无法挂载的文件如.sh
    limuyan44
        13
    limuyan44  
       2019-07-04 15:39:32 +08:00 via Android
    挂载,楼上应该已经说完了
    letitbesqzr
        14
    letitbesqzr  
       2019-07-04 5:46:25 +08:00
    @senghoo #10

    get 新技能,虽然不建议,但的确很实用。
    moodasmood
        15
    moodasmood  
    OP
       2019-07-04 15:49:38 +08:00
    @senghoo 是这样用的吗 docker inspect --format='{{.GraphDriver.Data.MergedDir}}' 434909d2327d,
    返回 /var/lib/docker/overlay2/f14e714cac42380e004676d6622a84b853660c1a5f9a96e62c321fbca3d9f146/merged
    但是目录不存在
    senghoo
        16
    senghoo  
       2019-07-04 16:39:18 +08:00   1
    @moodasmood 你是用 docker for Mac 之类的吧。
    如果是的话,docker for Mac 是在你 Mac 里跑一个虚拟机。 这个路径是虚拟机里的路径。所以可能用不了。

    如果不是应该是你的容器没在运行?
    senghoo
        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 可以用。
    moodasmood
        18
    moodasmood  
    OP
       2019-07-04 16:55:49 +08:00
    @senghoo 确实是 mac,感谢
    shawndev
        19
    shawndev  
       2019-07-04 19:52:16 +08:00
    不要问,问就是 VSCode Remote Development
    CivAx
        20
    CivAx  
       2019-07-05 09:36:04 +08:00
    如果这是你自己打 Dockerfile 建立的镜像,建议你自己维护一个 basic 镜像,在 basic 里面预先运行各类 RUN apt-get 命令装好需要的环境,然后再 FROM basic:0.1
    div id="Bottom">
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     798 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 21:40 PVG 05:40 LAX 13:40 JFK 16:40
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86