需要使主机可以通过Docker将IP分配给容器的容器访问容器

时间:2019-09-06 15:40:12

标签: docker docker-compose

是否可以在Linux上设置docker容器,以便可以使用容器的ip从Windows 10上的主机直接访问它?

我的docker compose文件很简单

version: '2'
services:
  silo1:
    hostname: silo1
    image: 'silo'
    ports: 
        - '11111:11111'
        - '30000:30000'

现在要检查我运行的容器的IP地址

# hostname -I
172.20.0.2
#

此容器运行可从子网络172.20.0。*上的其他容器访问的服务,但是运行Docker的Windows 10上的我的主机无法通过包括11111、30000在内的任何端口ping IP。

paping.exe 172.20.0.2 on TCP 11111:
Connection timed out

我的主机显示以下网络信息:

IPv4 address: 192.168.0.22
IPv4 Subnet Mask: 255.255.255.0

也许是由于主机和容器位于不同的本地子网上而引起的问题?是的,如何配置Docker容器为我的容器分配192.168.0。* IP?我想知道集装箱如何挑选集装箱的港口,为什么特别是172.20 *?

我知道这些端口是通过主机打开的,例如必须通过192.168.0.22:11111访问容器的服务,但是我需要使用分配给容器的ip,而不是主机系统。

1 个答案:

答案 0 :(得分:0)

Docker从其默认网桥(在您的情况下为172.20.0.0/16)分配IP地址。

但是Docker还可以让您创建一个自定义的桥接网络,您可以在其中选择IP范围。

此处有更多信息:https://docs.docker.com/network/bridge/