簡體   English   中英

AWS上的Docker-環境變量未從主機繼承到容器

[英]Docker on AWS - Environment Variables not inheriting from host to container

我有一個腳本(托管在GitHub上 ),可以執行以下操作:

  • 在AWS上創建EC2實例
  • 將本地IP(專用IP地址) $LOCALIP為環境變量$LOCALIP
  • 安裝Docker(官方倉庫)
  • 更新基礎實例(Ubuntu 16.04 LTS)
  • 拉出我的自定義圖像
  • 使用-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.

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