Docker 25.0.3适配docker-compose版本及external_links问题排查
Docker Compose 问题解答
背景说明
Docker版本为25.0.3,使用docker-compose 2.12.2时,docker-compose.yml中配置的external_links未生效,diagnose_worker无法连接对应服务;但使用docker compose(版本2.24.5)启动时该配置正常生效。docker-compose.yml内容如下:
version: '2.4' services: alfa_service: image: "docker-harvor/alfa_service:${CHATGPT_VERSION}" restart: always networks: - openai_net runtime: nvidia environment: - NVIDIA_VISIBLE_DEVICES=all ports: - "0.0.0.0:${CM_FASTAPI_PORT}:8000" - "0.0.0.0:${CM_GRPC_PORT}:50051" volumes: - "/etc/localtime:/etc/localtime:ro" - "/etc/timezone:/etc/timezone:ro" - "${LOG_DIR}/trtservice:/var/log/supervisor/trtservice" web: image: "docker-harvor/web_service:${CHATGPT_VERSION}" restart: always cap_add: - SYS_TIME ports: - "0.0.0.0:${CM_WEB_PORT}:8080" networks: - openai_net env_file: - .env volumes: - "/etc/localtime:/etc/localtime" - "/etc/timezone:/etc/timezone" - "/proc/sysrq-trigger:/sysrq" - "${SWIFT_DIR}:/mnt:ro" - "${LOG_DIR}:/var/log/proscan" - "${DATA_DIR}:/opt/proscan" environment: - TZ=${SYS_TIME_ZONE} external_links: - mysql:${CM_MYSQL_HOST} - redis:${CM_REDIS_HOST} - rabbitmq:${CM_CELERY_HOST} - oss:${CM_SWIFT_HOST} diagnose_worker: image: "docker-harvor/diagnose_worker:${CHATGPT_VERSION}" restart: always networks: - openai_net env_file: - .env volumes: - "/etc/localtime:/etc/localtime:ro" - "/etc/timezone:/etc/timezone:ro" - "${LOG_DIR}/worker:/var/log/supervisor/worker" - "${LOG_DIR}:/var/log/proscan" external_links: - mysql:${CM_MYSQL_HOST} - redis:${CM_REDIS_HOST} - rabbitmq:${CM_CELERY_HOST} - oss:${CM_SWIFT_HOST} links: - alfa_service:${CM_PROSCAN_HOST} - web:${CM_WEB_SERVICE} nginx: image: "docker-harvor/nginx_proxy:${CHATGPT_VERSION}" restart: always network_mode: host volumes: - "/etc/localtime:/etc/localtime:ro" - "/etc/timezone:/etc/timezone:ro" - "${LOG_DIR}/system:/www/data/logs" - "${LOG_DIR}/nginx:/var/log/nginx" networks: openai_net: external: true
1. Docker 25.0.3应对应哪个版本的docker-compose?
Docker官方推荐配套使用Compose v2.24.x及以上版本(如你已安装的2.24.5)。同大版本周期内的Compose与Docker引擎兼容性最佳,能避免功能不兼容或已知bug。
2. docker-compose与docker compose有什么区别?
docker-compose:属于Compose v1系列,是独立的二进制工具,已停止主动开发,仅做关键bug维护。它与Docker引擎分离运行,是旧版实现。docker compose:属于Compose v2系列,是Docker CLI集成的插件,为官方当前主推版本。与Docker引擎集成度更高,支持更多新特性,性能更优,后续会持续迭代更新。
3. 服务器上同时安装了版本为2.12.2的docker-compose和版本为2.24.5的docker compose,使用docker compose启动时external_links生效,而用docker-compose启动时无效,我应该使用哪个版本?
应该使用**docker compose(2.24.5版本)**。原因如下:
- 你的场景中
external_links在新版docker compose下正常工作,旧版docker-compose(2.12.2)存在兼容性bug,导致配置失效。 - Compose v2是官方当前维护的版本,后续会持续修复bug、添加新特性,而v1已进入维护尾声,不再更新功能。
- 搭配你的Docker 25.0.3版本,v2的兼容性和稳定性更有保障。
4. Docker从哪个版本开始支持docker compose命令?
Docker引擎从20.10.0版本开始正式内置支持docker compose命令(Compose v2)。在此之前,用户需要单独安装Compose v2插件才能使用该命令。
内容的提问来源于stack exchange,提问作者Andrew
相关产品推荐
相关产品推荐

