簡體   English   中英

進入Docker容器並執行命令並最終退出的Shell腳本

[英]Shell script to enter Docker container and execute command, and eventually exit

我想編寫一個shell腳本,該腳本進入一個正在運行的docker容器,編輯一個特定文件,然后退出它。

我最初的嘗試是-

  1. 創建run.sh文件。
  2. 將以下命令粘貼到其中

     docker exec -it container1 bash sed -i -e 's/false/true/g' /opt/data_dir/gs.xml exit 
  3. 運行腳本-

     bash ./run.sh 

但是,一旦腳本進入container1,它將登陸到其bash終端。 好像整個腳本在我進入容器后就立即中斷,而將包含腳本的父容器留在后面。

我覺得你很親密。 您可以嘗試如下操作:

docker exec container1 sed -i -e 's/false/true/g' /opt/data_dir/gs.xml

說明:

  • -it是用於交互式會話的,因此您在這里不需要它。
  • 碼頭工人可以執行任何命令(如sed )。 您不必通過bash運行sed

通過使用以下代碼段來解決此問題

myHostName="$(hostname)"
docker exec -i -e VAR=${myHostName} root_reverse-proxy_1 bash <<'EOF'
sed -i -e "s/ServerName .*/ServerName $VAR/" /etc/httpd/conf.d/vhosts.conf
echo -e "\n Updated /etc/httpd/conf.d/vhosts.conf $VAR \n"
exit

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM