簡體   English   中英

如何進入docker容器使用shell腳本做點什么?

[英]How to enter docker container use shell script and do something?

我想進入我的容器並做一些事情,然后離開這個容器。

#!/bin/bash
docker exec -i ubuntu-lgx bash << EOF

echo "test file" >> /inner.txt
ls -l /inner.txt
content=`cat /inner.txt`
echo ${conent}                                                             

# do something else

EOF

當我運行這個腳本時,bash 告訴我文件不存在。但是ls可以 output 文件的屬性。

cat: /inner.txt: No such file or directory
-rw-r--r--. 1 root root 58 Nov 14 11:51 /inner.txt

我哪里錯了? 以及如何解決?

問題是您沒有保護您的“此處”文檔免受本地 shell 擴展的影響。 當你寫:

#!/bin/bash
docker exec -i ubuntu-lgx bash << EOF

content=`cat /inner.txt`

EOF

cat /inner.txt在您的本地系統上運行,而不是在遠程系統上運行。 解析此處文檔的內容以進行變量擴展和其他 shell 功能。

為了防止這種情況,請這樣寫:

#!/bin/bash
docker exec -i ubuntu-lgx bash << 'EOF'

echo "test file" >> /inner.txt
ls -l /inner.txt
content=`cat /inner.txt`
echo ${content}                                                             

# do something else

EOF

'EOF'中的單引號是向 shell 逐字解釋此處文檔的信號。

暫無
暫無

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

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