“网关”:“172.31.0.1”, “IP地址”:“172.31.0.2”,
我使用docker-file创建docker容器:
version: '3.6'
services:
web:
image: nginx
hostname: project1
ports:
- "127.0.0.101:80:80"
networks:
some_network:
aliases:
- project1.local
- www.project1.local
networks:
some_network:
# Общая сеть со смежными проектами
name: 'our_network'
**制作**
**docker container inspect 50631755223c**
我明白了
"NetworkSettings": {
"Bridge": "",
"SandboxID": "53e14814f2bd19036439e5327a91416784920841435195d362c751d9995de5b5",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {
"80/tcp": [
{
**"HostIp": "127.0.0.101",**
"HostPort": "80"
}
]
},
"SandboxKey": "/var/run/docker/netns/53e14814f2bd",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "",
"Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "",
"IPPrefixLen": 0,
"IPv6Gateway": "",
"MacAddress": "",
"Networks": {
"our_network": {
"IPAMConfig": {},
"Links": null,
"Aliases": [
"pr1-web-1",
"web",
"project1.local",
"www.project1.local",
"50631755223c",
"project1"
],
"NetworkID": "9610c4d18d33068427f3eb4d5c3ecce87da5afc9eef59f610757f10a98156915",
"EndpointID": "1d60133501de2edc51f45db05ba0727ced4d2a102d63a8e26a3d9a2f93567d04",
"Gateway": **"172.31.0.1",**
"IPAddress": **"172.31.0.2",**
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:1f:00:02",
"DriverOpts": null
“网关”:“172.31.0.1”, “IP地址”:“172.31.0.2”,
我希望网关与我所要求的来自同一子网。
docker inspect
转储有关容器的非常低级的诊断信息。您几乎不需要那里的任何信息。更具体地说,它打印出的与 IP 相关的信息几乎毫无用处。
Docker 网络有两层。每个容器内部确实都有自己的 IP 地址,并且有一个与 Docker 网络对应的 IP 网络(在您的示例中,是手动配置的
some_network
网络)。 Docker 为该网络分配了 IPv4 地址范围 172.31.0.0/16。同样,这是您不需要了解的实现细节。
除此之外,您还请求将
ports:
从容器发布到主机。 ports: ['127.0.0.101:80:80']
按顺序表示,在绑定到地址 127.0.0.101
的主机接口上,将端口 80 转发到容器内的端口 80。这在 docker inspect
输出中可见(在 ports:
下),但该 IP 地址是 主机的 IP 地址,而不是 Docker 内部网络空间的一部分。
重申一下,实际上这些都不重要。如果您希望可以从同一主机上的容器外部访问容器端口,但不能从其他主机访问容器端口,我会使用普通的本地主机 IP 地址 127.0.0.1 作为绑定地址,并且我会使用
default
网络 Compose为您提供。我会将 Compose 设置减少到仅
version: '3.8'
services:
web:
image: nginx
ports:
- "127.0.0.1:80:80"
(删除所有
networks:
块、hostname:
设置,并修复 ports:
中的主机 IP 地址)
并完全忽略
docker inspect
输出。