因此,我正在远程服务器中运行私有注册表,例如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
?
答案 0 :(得分:2)
使用--net host
时,您将共享主机的整个网络设置及其所有接口。容器没有自己的IP地址。就像您在主机上运行Apache一样,您所处的网络环境完全相同:容器/进程没有自己的IP地址,只是在主机上的端口上监听。
Docker守护程序会在内部网络设置中创建一个docker0
接口。由于您使用的是主机网络堆栈,因此会在接口列表中看到它。但这不是“容器的IP”。 localhost
(总是127.0.0.1,这很神奇)将指向主机系统。