我有一个脚本(托管在GitHub上),可以执行以下操作:

  • 在AWS上创建EC2实例
  • 将本地IP(专用IP地址)保存为环境变量$LOCALIP
  • 安装Docker(官方仓库)
  • 更新基本实例(Ubuntu 16.04 LTS)
  • 拉出我的自定义图像
  • 运行带有-e LOCALIP的图像,尝试将主机环境变量传递给容器(我也尝试过-e LOCALIP=$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,但这仍然行不通。尝试使用容器中的echo $LOCALIP时,我还是一片空白...

    bash - AWS上的Docker-环境变量未从主机继承到容器-LMLPHP

    最佳答案

    问题是由于您的Shell脚本的这一行:

    echo "export LOCALIP=$(hostname -i)" >> /etc/bash.bashrc
    

    执行该命令后,export指令尚未生效。下次登录后生效。

    要使LOCALIP环境变量立即生效,请在echo "export ...命令后添加以下行:
    source /etc/bash.bashrc
    

    08-18 11:38