目前,我们正在将 compose 环境堆栈部署到 ubuntu 服务器。在 compose 文件中,我们没有定义地址并利用 docker compose 自带的底层默认 docker 桥接网络。
当我们将撰写环境部署到开发服务器(IP 范围 10.xxx)时,基本docker0网络地址从172.17.0.0.
对于每个后续部署,地址都会递增(即172.18.0.0,然后172.19.0.0) - 这是预期的。
我的问题是,当守护进程用完要分配的地址时会发生什么,该进程是否会重新开始172.17.0.0?还是发生了其他事情?我在文档中找不到任何此类信息。
基本上,我想知道这是否是我应该主动采取行动,而不是在问题发生时做出反应。
先感谢您!
目前,我们正在将 compose 环境堆栈部署到 ubuntu 服务器。在 compose 文件中,我们没有定义地址,也没有利用 docker compose 自带的底层默认 docker 网桥网络。
服务器 IP 在 10.xxx 范围内。
docker0默认情况下,旋转起来的172.17.0.0和增量的第二个字节每个部署(172.18.0.0,172.19.0.0,等),我们的服务器上-没有问题出现。
然而,当它启动并从我们的管道部署时,当 compose 启动并运行时,服务器上会创建另一个网络,它被命名为br-xxxxxxxxxxxwherex是一些随机字符。问题出现在这里,因为这个br-网络绑定到一个192.168.x.x地址。
我的问题是,为什么 docker daemon 在部署 compose 环境之前不推断冲突地址?
我可以验证这确实是一个问题,因为一旦发生这种情况,我就无法通过 ssh 进入服务器。
先感谢您!
这与我问的另一个问题有关,但这是我在解决此问题时注意到的一个完全独立的问题,因此我决定单独发表一篇文章。
今天早上我遇到了 C# 语言的一个有趣的方面,我还没有经历过;考虑下面的代码片段:
public class Example
{
public int getInt()
{
int? myInt = 2;
return myInt; // <-- compiler error.
}
public object getObject()
{
object? obj = new { };
return obj; // <-- OK, no error.
}
}
Run Code Online (Sandbox Code Playgroud)
编译器在上面的注释行上返回错误:Error CS0266: Cannot implicitly convert type 'int?' to 'int'. An explicit conversion exists (are you missing a cast?) (CS0266)
我发现有趣的是,对象示例运行得很好,没有任何抱怨。我假设这与基元与对象有关,但我无法找到任何资源。我知道返回类型与对象类型不匹配,我只是觉得它适用于对象而不是基元,这很奇怪。如果有人可以分享一些链接/提供解释为什么会这样,我们将不胜感激。