You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Docker Compose会覆盖yml文件中指定的容器名称?

Docker Compose容器名称被修改的原因及解决办法

问题原因

你在docker-compose.yml里写的redis-server是服务名称,不是容器名称。Docker Compose默认会按照[项目名]_[服务名]_[实例序号]的规则生成容器名称:

  • 项目名默认是Compose文件所在目录的名称(你的目录应该叫redis,所以前缀是redis_)
  • 实例序号是为了支持多实例部署,默认从1开始
    所以最终容器名变成了redis_redis-server_1。

解决方案

有两种方式可以得到你想要的redis-server容器名:

方法1:直接指定容器名称

在docker-compose.yml中给服务添加container_name字段,明确指定容器名:

version: '3'
services:
   redis-server:
      image: 'redis'
      container_name: redis-server

运行docker-compose up后,容器名称就会是redis-server。

注意:用这个方式后,该服务只能运行一个实例,因为Docker不允许存在同名容器。

方法2:修改项目名称

如果不想固定容器名,但想修改前缀,可以通过-p参数指定项目名,或者设置环境变量:

  • 命令行临时指定:
docker-compose -p myproject up

此时容器名会变成myproject_redis-server_1。

  • 设置环境变量(当前终端内永久生效):
export COMPOSE_PROJECT_NAME=myproject
docker-compose up

验证

修改配置或指定项目名后,重新运行docker-compose up,再执行docker ps就能看到符合预期的容器名称了。

内容的提问来源于stack exchange,提问作者user299702

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 16:11:16