问题标签 [docker-network]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
docker - docker:来自守护进程的错误响应:驱动程序在端点redis上编程外部连接失败
我正在尝试练习链接https://docs.docker.com/engine/userguide/networking/work-with-networks/#connect-containers中提供的示例。
然后在这个网络上运行 redis 的下一个 docker 命令给了我错误。
8a91f4a6e6a688173060ac20d71b461e13a7c7b7d6cbf1318d66114922e47357 docker: Error response from daemon: driver failed programming external connectivity on endpoint redis (4e8fad58239e5785f31c0c4e18a276f334410bcec3f9ecb6ec850d75e6120250): Error starting userland proxy: listen tcp 172.23.0.1:32787: bind: cannot assign requested address.
如何解决此错误?
docker - 如果不存在,Testcontainers 可以为我创建 docker 网络吗?
看起来我需要一个网络,因为我想通过主机名从另一个容器引用一个容器。
我也可以使用,--link
但它已被弃用,很快就会消失。这就是为什么我想知道 Testcontainers 是否可以为我创建一个 docker 网络。
使用命令行,我只需执行docker network create bridge2
,然后我可以像这样启动容器:
并nslookup alpine2
从alpine1
容器中解决。
如果我尝试使用默认--net=bridge
网络或跳过--net
选项(实际上是相同的),按名称引用将不起作用。
docker - 路由到主机而不是特定容器
我有简单的 docker-compose aka:
默认情况下,这个容器是在默认(brige)网络中创建的。该应用程序具有 db 连接属性:jdbc:postgresql:// db /some_db,并且一切正常。但有时我希望应用程序连接到其他数据库,该数据库在我的主机上运行,而不是在 docker 容器中。
主要问题是我无法更改连接属性。而且,理想情况下,我不想每次切换数据库主机时都运行带有一些附加选项的新容器(但重启是可以的)
因此我的问题是:实现这一目标的最佳方法是什么?是否可以为容器主机解析设置额外的路由?例如,如果 db 容器不可访问,则路由到主机。
docker - 如何在本地网络上的多个 docker 容器之间进行通信
我目前正在研究使用多个 docker 容器的超级账本区块链:
- dev-peer0.org1.example.com-marbles-v5.9
- peer0.org1.example.com
- 沙发数据库
- orderer.example.com
- cli
- ca.example.com
在默认配置下,它们都在同一台机器上运行。
我想要实现的是将它们划分在两台不同的计算机上:
电脑1:
- dev-peer0.org1.example.com-marbles-v5.9
- peer0.org1.example.com
- 沙发数据库
电脑2:
- orderer.example.com
- cli
- ca.example.com
我可以在不编辑任何 conf 文件的情况下使用主机文件来完成这项工作吗?
PC1:
PC2:
我已经尝试过但我没有工作,但我想知道我是否应该更多地采用这种方式?
docker - 找不到 Docker Compose 网络条目
我正在尝试从我的 Win10 笔记本电脑上运行的一个 Docker 容器与另一个也在本地运行的容器进行通信。
我启动目标容器,我看到以下网络:
然后我用 . 启动我的调用容器docker-compose up
。然后我可以通过命令行成功地将我的另一个容器连接到网络:
但是,我无法通过将其添加到调用容器network
的文件部分来连接到同一个网络。docker-compose.yml
我的印象是他们基本上都做了同样的事情:
错误消息告诉我它找不到网络,这是不正确的,因为我可以通过命令行连接,所以我知道它确实存在并且正在运行:
有人知道我缺少什么吗?
docker - 是否可以将 docker 容器 A 上的端口 XXXX 绑定到 docker 容器 B 上的端口 XXXX 或 YYYY
假设我有一个 docker-compose 文件,如下所示:
所以我喜欢从 Web 容器中的 8004 端口为 App 容器上的 8003 端口提供服务。但我无法得到结果。所以我的猜测是 Web 容器上 8004:8003 的 Web 端口映射仅限于 Web 容器。还是它实际上映射到 App 容器上暴露的 8003 端口?
如果是这样,我如何测试 Web 端口 8004 实际上映射到 App 容器上的端口 8003?
有没有办法让我创建一个单向绑定(甚至更好的双向绑定)或将 App 容器上的端口 8003 映射到 Web 容器上的端口 8004?
如果我的主机正在运行一些 App 和 docker 服务(包括这两个容器),并且 App 正在尝试侦听 Web 容器中的端口 8004,他实际上是在与 App 容器通信。
docker - Docker 容器仅在网络上
我使用 Docker,并且我有多个 webapps,每个 webapps 都需要一个 MySQL 服务器。实际上,每个 webapp 都使用自己的桥接网络与他的 MySQL 服务器进行通信,但每个 MySQL 服务器使用不同的端口(3306、3307、3308 ...)。
我不能在端口 3306 上运行它们,因为第一个 MySQL webapp 已经使用了这个。
是否可以在 3306 上的 MySQL 服务器上执行所有操作?
我有的 :
| Net1(桥) | Net2(桥) | Net3(桥) | .... |
|--------------------|----------|------ ---------------|-----|
| 网络应用程序1:80 | Webapp2:8080 | Webapp3:8081 | ... |
| mysql:3306 | mysql:3307 | mysql:3308 | ... |
我想要什么:
| Net1(桥) | Net2(桥) | Net3(桥) | .... |
|--------------------|----------|------ ---------------|-----|
| 网络应用程序1:80 | Webapp2:8080 | Webapp3:8081 | ... |
| mysql:3306 | mysql:3306 | mysql:3306 | ... |
我如何运行我的容器:
谢谢
旧帖:
使用Docker,我想知道是否可以仅在网络上而不是在主机上公开容器。
示例:我在网络上各有 3 个服务并使用 MySQL,但我不想更改 MySQL 的端口。
Net 1 : myapp:80 (本地主机可访问) & MySQL:3306 (仅在网络上)
Net 2 : myapp:8080 (本地主机可访问) & MySQL:3306 (仅在网络上)
等等
是否可以通过在 上运行 MySQL 来做某事
0.0.0.0
?谢谢
docker - 网络未在独立群中创建为“--attachable”
我已经设置了一个引用Docker 文档的 docker swarm - Create Swarm cluster。
我启动了一个领事、一个经理和一个节点。当我尝试使用命令为我未来的容器创建网络时:
我收到错误消息说:
"--attachable" 需要 API 版本 1.25,但 Docker 守护进程 API 版本是 1.24
当我检查我的 swarm 管理器的版本时,我看到 docker API 版本从 1.30 降级到 1.24。对于我的主机或领事或节点而言并非如此,只是为 swarm manager 降级:
所以我似乎无法控制管理器自行降级,并在其上创建覆盖网络。我错过了什么?在具有 docker 版本的两台不同的机器上尝试了两次:
- 17.09.1-ce
- 17.06.0-ce。
docker - 从主机 ip 访问具有随机端口的 docker 容器
场景是这样的:
在 Linux 机器的容器中运行着一个应用程序。该应用程序内部运行了多个服务,每个服务都有自己的端口号。端口号非常随机。
现在我想在 Mac 笔记本电脑上访问这个应用程序。这台 Mac 笔记本电脑能够 ping Linux 机器 ip。
我目前正在做的一种方法是将所有端口从 docker 容器映射到 Linux 机器,然后我可以使用 Linux 机器 IP 从 Mac 访问。
但是这种方法不能随着更多服务的加入而扩展。我想知道是否有人遇到过同样的问题并有更好的方法来处理这个问题?我们不在这些 Linux 机器上运行 Kubernetes,因为它们不是服务器。这些机器用于个人发展。
谢谢!
docker-compose - 在 docker-compose.yml 或 dockerfile 中创建 Docker 网络
我的 docker 服务需要网络才能正常工作。我打算共享我的撰写文件,但我不想每次都手动创建具有正确参数的网络。
我希望在构建过程中,在 Dockerfile 或 docker-compose 文件中创建网络。