每个操作系统会话一次只能有一个docker上下文处于活动状态吗



我很难理解docker上下文文档,因为它与我迄今为止的真实经验相比。

我想看看我是否可以快速轻松地将docker-compose.yml文件转换为某个服务器上正在运行的应用程序堆栈会很有趣。理想情况下,我可以简单地将文件上传到某个位置的repo,但在任何情况下,最常建议的解决方案都是aws-ecsdocker-compose集成。

根据该文件,该过程为

  1. 在您的机器上本地拥有给定的docker-compose.yml
  2. 使用aws clidocker context的组合,使用dockercli命令将容器部署到aws ecs

关键命令似乎是docker context use {{name}}。这就是我困惑的地方。

我成功地将容器堆栈部署到了ecs(显然,我不知道如何在aws UI中看到这一点,但该应用程序在URL上可用,所以它起了作用。我希望我没有被收费…(,但后来,我想在另一个项目上进行一些本地开发。

我打开另一个终端,尝试运行docker命令。显然,docker context持续存在,所以我不得不用docker context use default切换回来。当我这么做的时候,我部署的应用程序崩溃了。我切换回另一个终端,做了docker context use {{name}},现在即使我的另一个应用程序的本地开发容器似乎正在运行,但对它们的请求在所有端口上都失败了。

我是否理解亚马逊ECS上部署的容器堆栈取决于我本地机器的某些状态?我关掉这台机器怎么办?我现在不能做任何其他docker开发了?如果这是真的,有没有更好的方法来使用docker-ecs集成,因为如果这都是真的话,显然这基本上是不可用的。

docker config context use将上下文名称记录在配置文件中(在我当前的MacOS/Docker Desktop系统上,位于$HOME/.docker/config.json中(。因此,以这种方式更改上下文会更改所有终端窗口中所有shell的上下文。

Docker还支持$DOCKER_CONTEXT环境变量,与所有环境变量一样,这将是当前shell的本地变量。如果您试图使用这种支持部署到云环境,那么只为执行部署的命令设置环境变量可能是个好主意。

export DOCKER_CONTEXT=ecs
docker-compose up -d
docker ps -a
unset DOCKER_CONTEXT

如果部署的ECS应用程序与您的本地系统有任何依赖关系,或者本地运行docker context use导致您的云托管应用程序中断,我会感到非常惊讶。上下文设置仅影响Docker守护进程或其他API端点本地docker命令与之对话;它不会在您的即时系统之外进行任何持久的更改。ECS应用程序可能对您的本地系统一无所知(除非您已将其DNS名称包含在环境变量设置或类似配置中(,甚至可能没有网络路径可以调用。

相关内容

  • 没有找到相关文章

最新更新