我正在尝试在容器中设置网络(使用Docker的libnetwork
和libcontainer
),但我一直在遇到这个问题。据我所知,它正在调查some_app
以获取一些沙箱信息?
INFO[3808] No non-localhost DNS nameservers are left in resolv.conf. Using default external servers : [nameserver 8.8.8.8 nameserver 8.8.4.4]
INFO[3808] IPv6 enabled; Adding default IPv6 external servers : [nameserver 2001:4860:4860::8888 nameserver 2001:4860:4860::8844]
Error: unknown command "/var/run/docker/netns/582bd184e561" for "some_app"
Run 'some_app --help' for usage.
ERRO[3808] Resolver Setup/Start failed for container 6b81802576bd4f16aa117061f81b5c3e, "setup not done yet"
ERRO[3808] failed to add interface vethef0a693 to sandbox: failed in prefunc: failed to set namespace on link "vethef0a693": invalid argument
ERRO[3808] failed to add interface vethef0a693 to sandbox: failed in prefunc: failed to set namespace on link "vethef0a693": invalid argument
我想知道是否有人可以帮助我理解这一点并且可能会阻止它。这两个是分开的错误吗?
谢谢
答案 0 :(得分:0)
我花了一段时间来弄清楚这一点,但是这里有:
就像在Docker中一样,libnetwork
创建了一个veth接口对。然后它将veth对的一端移动到容器命名空间中。在此过程中some_app
尝试在二进制文件的当前实例(some_app
上)执行在运行时注册的命令。
然而,reexec
的外部接口上不存在这些命令。稍后使用名为reexec
的库注入它们。为此,if reexec.Init() {
return
}
需要像这样初始化:
libnetwork
另请注意,根据this thread ILog logger = LogManager.GetLogger(typeof(MyClass));//normal logger
ILog customerlogger= LogManager.GetLogger("customerlogger");//customer logger
,Docker之外的应用程序目前不支持。
NB :我通过阅读源代码发现了这一点,所以我可能错了,但在此之后我的问题就消失了。