如何自定义docker-compose容器命名规则,将短横线改为下划线?
这个命名分隔符差异和操作系统无关,是Docker Compose版本迭代导致的默认行为变化:
- 旧版Docker Compose V1(独立命令
docker-compose,带中划线)默认使用下划线作为容器名分隔符,规则为<project>_<service>_<replica> - 新版Docker Compose V2(集成为Docker CLI子命令
docker compose,不带中划线)默认改用短横线作为分隔符,规则为<project>-<service>-<replica>,Windows端Docker Desktop默认启用了V2版本,因此出现命名变化。

你可以通过以下任意一种方式改回下划线命名规则:
方法1:单次执行兼容模式
执行compose命令时添加--compatibility参数即可临时启用V1兼容逻辑,自动使用下划线命名:
docker compose --compatibility up -d
方法2:全局切换回Compose V1
如果需要长期沿用旧版命名规则,可以直接关闭Docker Desktop的V2开关:
- 打开Docker Desktop设置界面
- 找到「开发中功能/Features in development」选项栏
- 取消勾选
Use the new Compose V2,保存设置后重启Docker即可
方法3:通过环境变量全局开启兼容模式
不想切换回V1的情况下,可以配置COMPOSE_COMPATIBILITY环境变量为true,所有compose命令都会自动沿用V1命名规则:
- Windows PowerShell设置:
$env:COMPOSE_COMPATIBILITY="true" - Windows CMD设置:
set COMPOSE_COMPATIBILITY=true - Linux/macOS设置:
export COMPOSE_COMPATIBILITY=true
方法4:手动指定固定容器名
如果只需要特定服务使用固定名称,可以直接在docker-compose.yml中对应服务下配置container_name参数,完全不受默认命名规则影响:
services: nginx: image: nginx:alpine container_name: myproject_nginx_1 ports: - "80:80"
内容的提问来源于stack exchange,提问作者jawira
相关产品推荐
相关产品推荐

