繁体   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