是因为Docker容器的运行过程中使用的是不同的上下文环境。
当我们在Dockerfile中设置环境变量时,这些环境变量将被写入到镜像的元数据中,即在容器启动之前就已经被定义好了。而docker exec命令是在容器运行时启动一个新的进程,并在该进程的上下文中执行命令,此时容器已经在运行状态,它并不会重新读取镜像中的元数据。
要使在Dockerfile中设置的环境变量在docker exec中生效,可以通过以下几种方式进行处理:
总结起来,Dockerfile中设置的环境变量只在容器启动时生效,而docker exec是在容器运行时执行命令,无法获取到Dockerfile中设置的环境变量。如果需要在docker exec中使用这些环境变量,需要通过其他方式进行设置。
领取专属 10元无门槛券
手把手带您无忧上云