来自私有注册表的图像使network_mode主机不使用本地IP

时间:2018-08-04 08:29:17

标签: docker docker-compose

因此,我正在远程服务器中运行私有注册表,例如51.15.235.12:5000,然后将docker映像本地推送到该注册表。我正在尝试使用具有network_mode host的主机IP来启动容器,但是容器的ip类似于172.17.0.1

这是docker-compose:

version: '2'
services:
rsi:
    container_name: rsi
    image: localhost:5000/rsi:1.0
    restart: on-failure:10
    depends_on:
        - geoserver
        # - rsi-db
    network_mode: host

# Geoserver
geoserver:
    container_name: geoserver
    restart: always
    image: localhost:5000/geoserver:1.0
    network_mode: host
    logging:
        driver: "json-file"
        options:
            max-size: "10m"
            max-file: "10"
    environment:
        - GEOSERVER_LOG_LOCATION=/opt/geoserver/data_dir/logs/geoserver.log

此处的localhost-IP为51.15.235.12,但是当我输入rsi容器时,运行ifconfig时会得到此信息:

docker0   Link encap:Ethernet  HWaddr 02:42:E5:09:B4:E9  
      inet addr:172.17.0.1  Bcast:172.17.255.255  Mask:255.255.0.0

为什么未将docker0接口IP设置为本地主机IP,即51.15.235.12

1 个答案:

答案 0 :(得分:2)

使用--net host时,您将共享主机的整个网络设置及其所有接口。容器没有自己的IP地址。就像您在主机上运行Apache一样,您所处的网络环境完全相同:容器/进程没有自己的IP地址,只是在主机上的端口上监听。

Docker守护程序会在内部网络设置中创建一个docker0接口。由于您使用的是主机网络堆栈,因此会在接口列表中看到它。但这不是“容器的IP”。 localhost(总是127.0.0.1,这很神奇)将指向主机系统。