我目前正在对我正在设置HA群集的解决方案进行故障排除。虽然我知道应用程序执行故障转移和故障恢复所需的端口,但不知何故,dockerized解决方案无法正常工作。我怀疑还有一些我还不知道的端口。目前我的EXPOSE
声明说:
EXPOSE 8080 61616 5672 61613 5445 1883
我也用
启动我的泊坞窗图像docker run --network host -p 8080:8080 -p 61616:61616 -p 5672:5672 -p 61613:61613 -p 5445:5445 -p 1883:1883
但为了排除故障,我想公开所有端口。
我尝试过类似的事情:
EXPOSE 1-65535
但这会产生错误。
我可以公开docker容器的所有端口的最佳方法是什么?
答案 0 :(得分:8)
使用--network host
运行时,无需映射端口。所有docker容器端口都可用,因为网络主机模式使容器使用主机的网络堆栈。
此外,不需要EXPOSE 8080 61616 5672 61613 5445 1883
。该指令不做任何事情。它只是一种记录需要映射的端口的方法。
简而言之,运行docker run --network host ...
将公开所有容器端口。
答案 1 :(得分:4)
首先,您可以将--publish-all=true|false
或docker run
提供给--expose <port>
,这是一项一揽子操作,可识别图像的Dockerfile或/proc/sys/net/ipv4/ip_local_port_range
命令行标记中的EXPOSE行的每个端口并将其映射到短暂端口范围内的某个主机端口。然后需要使用docker port命令检查创建的映射。临时端口范围由32768 to 61000
内核参数配置,通常范围为CommandInvokationFailure: Gradle build failed.
C:/Program Files/Java/jdk1.8.0_131\bin\java.exe -classpath "C:\Program Files\Unity2017.2\Editor\Data\PlaybackEngines\AndroidPlayer\Tools\gradle\lib\gradle-launcher-2.14.jar" org.gradle.launcher.GradleMain "assembleDebug"
stderr[
FAILURE: Build failed with an exception.
* What went wrong:
A problem occurred configuring root project 'gradleOut'.
> failed to find Build Tools revision 28.0.0
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
]
stdout[
BUILD FAILED
Total time: 2.877 secs
]
exit code: 1
UnityEditor.Android.Command.WaitForProgramToRun (UnityEditor.Utils.Program p, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)
UnityEditor.Android.Command.Run (System.Diagnostics.ProcessStartInfo psi, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)
UnityEditor.Android.GradleWrapper.RunJava (System.String args, System.String workingdir, UnityEditor.Android.Progress progress)
Rethrow as GradleInvokationException: Gradle build failed
UnityEditor.Android.GradleWrapper.RunJava (System.String args, System.String workingdir, UnityEditor.Android.Progress progress)
UnityEditor.Android.GradleWrapper.Run (System.String workingdir, System.String task, UnityEditor.Android.Progress progress)
UnityEditor.Android.PostProcessor.Tasks.BuildGradleProject.Execute (UnityEditor.Android.PostProcessor.PostProcessorContext context)
UnityEditor.Android.PostProcessor.PostProcessRunner.RunAllTasks (UnityEditor.Android.PostProcessor.PostProcessorContext context)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)
。
答案 2 :(得分:3)
主机网络驱动程序仅适用于Linux主机,Mac的Docker桌面,Windows的Docker桌面或Windows Server的Docker EE不支持该主机网络驱动程序。
有关the Docker documentation portal的更多信息。
答案 3 :(得分:0)
使用host
网络将公开几乎所有端口,就像在主机中运行应用程序一样。如果在主机联网模式下运行时使用了端口标志,则会忽略这些标志并显示警告
注意:考虑到容器在使用主机模式网络时没有自己的IP地址,因此端口映射不会生效,并且-p,--publish,-P和--publish-all选项被忽略,而是发出警告:
WARNING: Published ports are discarded when using host network mode
请确保您的主机是Linux主机,因为主机网络仅受Linux主机支持。
主机网络驱动程序仅适用于Linux主机,Mac的Docker桌面,Windows的Docker桌面或Windows Server的Docker EE不支持该主机网络驱动程序。
这在Docker文档中已提及。 View particular Documentation