我正在使用Docker Compose设置多个服务,以便它们可以通过公共网络与每个服务进行通信。调用命令docker-compose up
Docker版本:Docker版本19.03.5,内部版本633a0ea
错误:
Creating network "was-kerberos-database_krbnet" with the default driver
Creating was-kerberos-database_kerberos_1 ...
Creating was-kerberos-database_websphere_1 ...
Creating was-kerberos-database_websphere_1 ... error
ERROR: for was-kerberos-database_websphere_1 Cannot start service websphere: driver failed programming external connectivity on endpoinCreating was-kerberos-database_kerberos_1 ... done
isten tcp 0.0.0.0:9443: bind: address already in use
Creating was-kerberos-database_db2_1 ... done
ERROR: for websphere Cannot start service websphere: driver failed programming external connectivity on endpoint was-kerberos-database_websphere_1 (e4706a4f9ec7bb5f2ab81078c270d15c786999edf5dc8a2a235e316b62cc39da): Error starting userland proxy: listen tcp 0.0.0.0:9443: bind: address already in use
ERROR: Encountered errors while bringing up the project.
似乎docker compose试图启动was-kerberos-database_websphere_1
实例的两个重复实例。然后就遇到了问题,因为两个端口都绑定了相同的端口。
version: '3'
volumes:
krb5kdc-data:
services:
websphere:
build: websphere-traditional
ports:
- "9043:9043"
- "9443:9443"
- "9080:9080"
environment:
- KRB5_REALM=EXAMPLE.COM
- KRB5_KDC=kerberos
- ENABLE_BASIC_LOGGING=true
volumes:
- ./trace/twas/logs:/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/logs
networks:
krbnet:
ipv4_address: 10.5.0.2
db2:
build: db2
ports:
- "50000:50000"
environment:
- KRB5_REALM=EXAMPLE.COM
- KRB5_KDC=kerberos
privileged: True
depends_on:
- "kerberos"
networks:
krbnet:
ipv4_address: 10.5.0.5
kerberos:
build: kdc-server
ports:
- "88:88"
- "464:464"
- "749:749"
environment:
- KRB5_REALM=EXAMPLE.COM
- KRB5_KDC=localhost
- KRB5_PASS=password
volumes:
- krb5kdc-data:/var/lib/krb5kdc
networks:
krbnet:
ipv4_address: 10.5.0.9
networks:
krbnet:
ipam:
config:
- subnet: 10.5.0.0/16
我已经运行sudo lsof -i -P -n | grep 9443
来查看是否有其他东西正在使用该端口,而没有任何作用。