我正在尝试实现this tutorial。“docker-compose”内容如下:
# WARNING: Do not deploy this tutorial configuration directly to a production environment
#
# The tutorial docker-compose files have not been written for production deployment and will not
# scale. A proper architecture has been sacrificed to keep the narrative focused on the learning
# goals, they are just used to deploy everything onto a single Docker machine. All FIWARE components
# are running at full debug and extra ports have been exposed to allow for direct calls to services.
# They also contain various obvious security flaws - passwords in plain text, no load balancing,
# no use of HTTPS and so on.
#
# This is all to avoid the need of multiple machines, generating certificates, encrypting secrets
# and so on, purely so that a single docker-compose file can be read as an example to build on,
# not use directly.
#
# When deploying to a production environment, please refer to the Helm Repository
# for FIWARE Components in order to scale up to a proper architecture:
#
# see: https://github.com/FIWARE/helm-charts/
#
version: "3.5"
services:
# Orion is the context broker
orion:
image: fiware/orion:latest
hostname: orion
container_name: fiware-orion
depends_on:
- mongo-db
networks:
- default
expose:
- "1026"
ports:
- "1026:1026"
command: -dbhost mongo-db -logLevel DEBUG
healthcheck:
test: curl --fail -s http://orion:1026/version || exit 1
interval: 5s
# Tutorial displays a web app to manipulate the context directly
tutorial:
image: fiware/tutorials.context-provider
hostname: iot-sensors
container_name: fiware-tutorial
networks:
- default
expose:
- "3000"
- "3001"
ports:
- "3000:3000"
- "3001:3001"
environment:
- "DEBUG=tutorial:*"
- "PORT=3000"
- "IOTA_HTTP_HOST=iot-agent"
- "IOTA_HTTP_PORT=7896"
- "DUMMY_DEVICES_PORT=3001"
- "DUMMY_DEVICES_API_KEY=4jggokgpepnvsb2uv4s40d59ov"
- "DUMMY_DEVICES_TRANSPORT=HTTP"
iot-agent:
image: fiware/iotagent-ul:latest
hostname: iot-agent
container_name: fiware-iot-agent
depends_on:
- mongo-db
networks:
- default
expose:
- "4041"
- "7896"
ports:
- "4041:4041"
- "7896:7896"
environment:
- "IOTA_CB_HOST=orion"
- "IOTA_CB_PORT=1026"
- "IOTA_NORTH_PORT=4041"
- "IOTA_REGISTRY_TYPE=mongodb"
- "IOTA_LOG_LEVEL=DEBUG"
- "IOTA_TIMESTAMP=true"
- "IOTA_MONGO_HOST=mongo-db"
- "IOTA_MONGO_PORT=27017"
- "IOTA_MONGO_DB=iotagentul"
- "IOTA_HTTP_PORT=7896"
- "IOTA_PROVIDER_URL=http://iot-agent:4041"
# Database
mongo-db:
image: mongo:3.6
hostname: mongo-db
container_name: db-mongo
expose:
- "27017"
ports:
- "27017:27017"
networks:
- default
command: --bind_ip_all --smallfiles
volumes:
- mongo-db:/data
healthcheck:
test: |
host=`hostname --ip-address || echo '127.0.0.1'`;
mongo --quiet $host/test --eval 'quit(db.runCommand({ ping: 1 }).ok ? 0 : 2)' && echo 0 || echo 1
interval: 5s
networks:
default:
ipam:
config:
- subnet: 172.18.1.0/24
volumes:
mongo-db: ~
但是当我用命令“docker-compose up -d”运行docker compose时,我得到了这个错误:
*WARNING: The host variable is not set. Defaulting to a blank string.
Creating network "fiware_default" with the default driver
ERROR: Pool overlaps with other one on this address space*
我也可以通过运行命令“docker network ls”来获取这些网络:
*NETWORK ID NAME DRIVER SCOPE
78403834b9bd bridge bridge local
1dc5b7d0534b hadig_default bridge local
4162244c37b0 host host local
ac5a94a89bde none null local*
我看不出与名称“fiware_default”有冲突。问题出在哪里?
2条答案
按热度按时间cygmwpex1#
错误消息所指的“池”是172.18.1.0/24文件手动指定的www.example.com CIDR块。如果系统上的其他东西正在使用该网络空间,则它将无法启动。(例如,Docker可能已将另一个合成文件的网络分配给172.18.0.0/16。)
你通常根本不需要在Docker中手动指定IP地址,所以你应该删除
ipam:
块。完成后,你告诉Compose用默认设置配置default
网络,你实际上可以在文件末尾删除整个networks:
块。例外情况是如果您的主机网络环境正在使用一些相同的IP地址块,那么您可能需要这样的覆盖。(或从桌面应用程序查看主机的网络设置),并且您的主机或VPN使用的是172.18.1.* 地址,您也会收到此消息。在这种情况下,将网络更改为其他网络;如果您只需要/24(254个地址),那么设置
subnet: 192.168.123.0/24
(其中“123”可以是1到254之间的任何数字)应该可以解决这个问题。kcwpcxri2#
守护程序的错误响应:网络池与此地址空间上的另一个重叠。
在我的例子中,我有一个带有硬编码网络IP地址的docker-compose.yaml文件,另一个容器是从同一个网络启动的。
要解决此问题,首先,找到正在使用它的当前容器:
停止找到的网络的服务:
最后,启动出现故障的新容器,也可以删除IP网络配置或更改IP。