docker - 从容器访问本地主机网络而不暴露任何端口?
问题描述
语境
我可以访问本地网络中其他计算机的一些本地主机。例如,其中之一被称为pandahost
,所以如果我pandahost
在浏览器中浏览,我可以访问它。
目前我一直在使用 docker,并且我有以下 Docker-compose.yml:
version: "3"
services:
myproject:
build:
context: .
dockerfile: Dockerfile-for-my-project-environment
shm_size: 2gb
volumes:
- "D:/project/myproject1/folder:/myproject1"
- "D:/project/myproject2:/myproject2"
我使用这个 docker-compose 文件来运行服务的多个实例myproject
,所以我不想暴露任何端口以避免端口冲突。
到目前为止,一切对我来说都很好,除了我无法pandahost
从服务容器连接。
问题
有什么方法可以连接服务myproject
容器pandahost
而不暴露任何端口并且不会破坏拥有多个myproject
服务容器实例的可能性?
解决方案
如果您知道容器打开的端口,您可以使用以下命令简单地获取容器的 IP 地址:
alias docker_ip_address="docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}'"
docker_ip_address $container_ID
或更简单地说
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $container_ID
在这种情况下,我建议您使用container_name
docker-compose.yml 中的块来命名您的容器,以简化之前的操作。
推荐阅读
- flutter - 如何摆脱 suffixIcon 左侧的填充?由于填充光标未正确居中
- asp.net - 如何在 Braintree 中实现保险库功能以向用户显示现有卡信息
- merge - H2 给出从 H2 官方站点复制的 SQL 合并或更新查询的语法错误
- android - 单击应用程序图标时重新启动应用程序
- c++ - 使用 tinyXML2 读取 XML 时如何返回指向结构数组的指针
- mysql - 如何仅按顺序加入第一个记录顺序
- c# - 无法在运行时从网格创建组合网格
- authentication - 默认 WooCommerce 登录表单不允许用户在字段中输入
- python - python - 是否可以在 PyCharm 中创建具有依赖项的项目?
- excel - 如何使用或语句根据其他两列的条件从一列中提取唯一值?