![](/img/trans.png)
[英]Run an arbitrary command in a docker container that runs on a remote host after sourcing some environment variables from another command
[英]Docker on AWS - Environment Variables not inheriting from host to container
我有一個腳本(托管在GitHub上 ),可以執行以下操作:
$LOCALIP
為環境變量$LOCALIP
-e LOCALIP
運行所述圖像,嘗試將主機環境變量傳遞給容器(我也嘗試過-e LOCALIP=$LOCALIP
但是,當我在該實例上的容器中執行echo $LOCALIP
docker exec
並運行echo $LOCALIP
它什么也不顯示。 運行env
告訴我LOCALIP
在那里,但是沒有反對的地方
如果我銷毀容器並使用原始腳本中的完全相同的行(帶有-e LOCALIP=$LOCALIP
)重制,則它可以正常工作-我需要使該過程自動化,但是,一些其他幫助將不勝感激。
本質上sudo docker run -dit -e LOCALIP -p 1099:1099 -p 50000:50000 screamingjoypad/armada-server /bin/bash
不共享主機LOCALIP
變量。
更新
從下面嘗試建議,我source /etc/bash.bashrc
下行添加到腳本source /etc/bash.bashrc
但這仍然無法正常工作。 嘗試在容器中echo $LOCALIP
時,我仍然一片空白...
問題是由於shell腳本的這一行:
echo "export LOCALIP=$(hostname -i)" >> /etc/bash.bashrc
執行該命令后, export
指令尚未生效。 下次登錄后生效。
要使LOCALIP
環境變量立即生效,請在echo "export ...
命令之后添加以下行:
source /etc/bash.bashrc
我相信我已經解決了。 我現在正在使用AWS元數據通過腳本中的以下補充來獲取私有IP地址:
sudo docker run -dit -e LOCALIP=$(curl http://169.254.169.254/latest/meta-data/local-ipv4) -p 1099:1099 -p 50000:50000 screamingjoypad/armada-server /bin/bash
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.