docker - Visual Studio Docker 工具 - 图像在哪里以及容器在哪里运行
问题描述
在 Docker for Desktop 中,我选择了 docker-for-desktop 集群(它在 HyperV 上的 MobyLinuxVM 上运行)。
但是,当我转到 Visual Studio 并构建/调试具有 Docker 支持的项目,然后从命令行运行“docker ps -a”时,我没有看到创建了另一个容器。默认情况下,Visual Studio 是否会以某种方式将容器部署到单独的集群?
解决方案
我将 docker-compose 项目设置为启动项目(不知道为什么还没有)。此外,我在努力理解它为什么没有运行时导致的 docker-compose.yml 格式存在问题。
请注意,如果您不指定网络,docker-compose 将自动创建一个桥接网络,docker-compose 中的所有服务都将共享该网络(它们必须使用此网络的网关才能查看其他容器上的服务)。在构建过程中,它通常会增加桥接网络网关 IP 的第二个八位字节。我不得不不断更改网关 IP 的解决方法是创建一个用户定义的桥接网络,并将以下内容添加到 docker-compose.yml 的底部(文件中的所有服务都使用它):
networks:
default:
external:
name: mybridgenetwork
另一个有用的事情是我能够将多个环境变量传递给 docker-compose.yml 中的单个服务,如下所示:
services:
myservice1:
"envVariable1" : "somevalue"
"envVariable2" : "somevalue"
此外,我能够从本地 docker 注册表中提取它(如果在 Docker Desktop 上启用了 Kubernetes,那么您可以通过右键单击 Docker 图标,转到 kubernetes 子菜单来设置 docker-compose 将运行的上下文,然后选择上下文。如果您没有看到 docker-desktop 上下文,请从 powershell 或命令(以管理员身份运行)发出“docker swarm init”命令。然后,将以下内容添加到 docker-compose.yml 的图像行中以获取 docker compose 以检测本地 Docker for Windows 注册表中的构建图像:
image: ${DOCKER_REGISTRY}TheImageNameYouWant
请注意,容器名称将被称为 dockercompose[一些随机字符串]_[上面的图像名称]。您可以通过执行“docker ps -a”在 powershell(以管理员身份)中查看这些正在运行的容器。
最后一件事 - 确保 Visual Studio / 工具 / 选项 / 容器工具已选中“解决方案关闭时自动终止容器”。如果您认为您可能想在 docker-compose.yml 在启动时第一次运行之前对其进行更改,请取消选中前两个复选框。
推荐阅读
- android - 如何编写通用 BindingAdapter 来设置 OnLongClickListener?
- ssh - 套接字错误 - OSError: [Errno 99] - 在远程主机上运行 Jupyter-notebook
- javascript - 饼图未完全呈现
- android - Workmanager(定期)获取位置并上传数据(Asynctask)被杀死
- c# - Task.WhenAll 比 for 循环中的 await 慢,用于使用 HttpClient 进行多个 http 调用
- haskell - 为什么 GHC 不能确定在这个案例语句中使用哪个字段?
- python-3.x - 使用布尔值而不是 'if' 'else'
- mysql - SQL - 如何根据两个表获得总和?
- oracle - 我想通过添加 1000000 'FİLE_NO' 和 'PROT_NO' 列来更新这些表
- python - 返回经过训练的三元组标记器时出错:UnpicklingError: invalid load key, '\x0a'