启动Jhipster Registry时出现Driver failed programming external connectivity错误求助
先还原你遇到的错误场景:
C:\DEV\GITLAB\docker.compose>docker-compose -f jhipster-registry.yml up
Starting dockercompose_jhipster-registry_1 ... error
ERROR: for dockercompose_jhipster-registry_1 Cannot start service jhipster-registry: b'driver failed programming external connectivity on endpoint dockercompose_jhipster-registry_1 (4d7fb5c0e58ffbe825abc1d6ec7fa07ff19d61916647b8b74e82cf90437da7aa): Error starting userland proxy: mkdir /port/tcp:0.0.0.0:87...
这个错误本质是Docker没法完成端口映射,大概率是端口被占用或者Docker的网络代理组件出问题了,给你几个亲测有效的解决步骤:
检查并释放占用的端口
错误里提到的87开头的端口应该是JHipster Registry默认的8761端口。在Windows下打开命令提示符,运行:netstat -ano | findstr :8761找到输出里的PID,然后用命令强制结束进程:
taskkill /F /PID <你查到的进程ID>或者直接打开任务管理器,找到对应PID的进程结束掉。
重启Docker服务
有时候Docker的用户land代理进程会卡住,直接重启Docker Desktop就行:右键托盘里的Docker图标,选择“Restart”。如果还是不行,可以去Windows服务里找到“Docker Desktop Service”,重启这个服务。修改端口映射配置
如果你不想结束占用端口的进程,可以修改jhipster-registry.yml里的端口映射部分,比如把原来的:ports: - 8761:8761改成其他未被占用的端口,比如:
ports: - 8762:8761保存后重新运行
docker-compose -f jhipster-registry.yml up。清理Docker残留的网络资源
有时候之前的容器残留了无效的网络端点,先删掉出错的容器:docker rm -f dockercompose_jhipster-registry_1然后清理未使用的网络:
docker network prune之后再重新启动容器应该就能正常运行了。
内容的提问来源于stack exchange,提问作者Kelvin Meyer

