Shell脚本进入Docker容器并执行命令,最终退出

Zia*_*Zia 5 bash shell docker

我想编写一个 shell 脚本,该脚本进入正在运行的 docker 容器,编辑特定文件,然后退出它。

我最初的尝试是这样的——

  1. 创建 run.sh 文件。
  2. 将以下命令粘贴到其中

    docker exec -it container1 bash
    sed -i -e 's/false/true/g' /opt/data_dir/gs.xml
    exit
    
    Run Code Online (Sandbox Code Playgroud)
  3. 运行脚本 -

    bash ./run.sh
    
    Run Code Online (Sandbox Code Playgroud)

然而,一旦脚本进入container1,它就会登陆到它的bash终端。似乎一旦我进入容器,整个脚本就会中断,留下包含脚本的父容器。

vla*_*ima 1

我认为你很接近。你可以尝试这样的事情:

docker exec container1 sed -i -e 's/false/true/g' /opt/data_dir/gs.xml
Run Code Online (Sandbox Code Playgroud)

说明:

  • -it用于交互式会话,因此这里不需要它。
  • docker 可以执行任何命令(例如sed)。您不必sed通过 bash运行