我试图在GCP实例(Ubuntu 20.04)上构建和运行一个简单的Docker容器(使用docker-组合来完成此操作),并且似乎容器无法访问internet,除非我使用
docker run --net=host [...]
或者在我的docker-compose.yml
中使用类似于:
service:
build:
...
network: host
network_mode: host
...
我想知道为什么标准GCP实例上的一个简单的码头容器(带有Ubuntu20.04)应该需要一些特定的配置才能访问Internet,为什么我在网上搜索这个问题时几乎没有看到任何提及。
我是不是做错了什么,有什么更好的方法吗?
发布于 2022-02-14 23:32:00
参见Docker的集装箱联网,该原则也适用于其他容器运行时。
使用--net=host
或network_mode: host
将容器绑定到主机的网络。
与其将容器或服务的所有端口广泛发布到主机网络(从而使它们成为主机公共端口),您还可以更精确地使用--publish=[HOST-PORT]:[CONTAINER-PORT]
或ports
将容器端口公开为主机端口(并且可能会重新映射这些端口)。
默认情况下未发布的行为(有几个优点)的一个好处是,您必须采取第二步,将容器的端口发布到主机,在该主机上,服务可能会被不希望的参与者(通过其端口)访问。
https://stackoverflow.com/questions/71116876
复制相似问题