$ docker network ls
NETWORK ID NAME DRIVER SCOPE
ca564d4e76e6 bridge bridge local
6b4d2866afa8 host host local
15fa57f54e0b project1_default bridge local
a5eb24fc02b0 project2_default bridge local
d4b0a10c1385 service_tier bridge local
614c5864df80 none null local
5条答案
按热度按时间mepcadol1#
external
是使用现有网络。如果要合成以创建网络,只需执行以下操作:..以指示compose创建网络。它们将被命名为
<compose-dir>-<network name>
使用docker network ls
验证创建。也可以替代默认网络或指定更多特性。
..将覆盖默认网络设置MTU为1450(方便当主机有低于1500 mtu和路径mtu发现不正常工作).
当您希望两个合成设置中的服务相互通信或您有一个手动创建的网络时,
external
更有意义。jdgnovmf2#
正如@Grimmy正确指出的那样,docker创建了所有提到的网络,因此稍后可以通过运行另一个合成文件来引用这些网络。
但是,默认生成的网络名称几乎不实用或健壮。因为它可能会变得很长,或者
docker
团队改变了他们对命名策略的看法。但是由于合成文件版本
3.5
(意味着docker-compose
版本1.18.0
),人们可以随意命名网络,因此总体解决方案甚至更健壮。请参见以下片段,其中演示了如何实现这一点:
合成文件1
合成文件2
sqougxex3#
我也有这个错误:
在删除问题网络并重新创建之后,一切正常。
vhmi4jdf4#
不要将
external: true
与internal: false
合并。要允许单独的合成项目共享网络连接并自动创建该网络,只需在每个合成文件中指定匹配的网络name
。内部
设置为true时,允许创建外部隔离网络
默认情况下,网络不是内部网络,因此已经提供了 * 外部连接 *。
外部
如果设置为true,external指定此网络的生命周期在应用程序的生命周期之外进行维护。
external
属性指的是如何管理网络,但不描述其连接性或缺乏连接性。external: false
:姓名
如果没有指定的
name
属性,自动创建的网络将使用以项目名称为前缀的密钥。显式设置名称可防止项目范围并允许共享使用。示例
project1
project2
结果
在此配置中,
project2
中的web
服务可以使用共享service_tier
网络上的主机别名remotedb
访问project1
中的db
服务。如果
networks
部分中没有name
,您将看到单独的project1_service_tier
和project2_service_tier
,并且无法进行通信。vbopmzt15#
运行以下命令:Docker网络创建ddev_default