使用 Docker Compose 创建同一服务的多个容器
Posted
技术标签:
【中文标题】使用 Docker Compose 创建同一服务的多个容器【英文标题】:Create multiple containers of the same service with Docker Compose 【发布时间】:2022-01-05 22:21:08 【问题描述】:我目前正在使用 Docker Compose,我想知道如何为同一服务“Redis”创建多个容器。我已经尝试过使用 docker-compose up --scale redis=3,但它给出了一个错误,我一直在通过谷歌搜索可能的解决方案,但我找不到。
提前谢谢你。
这是我的 docker-compose.yml
version: '3'
services:
redis:
container_name: redis
hostname: redis
image: redis
redis-commander:
container_name: redis-dbms
hostname: redis-commander
image: rediscommander/redis-commander:latest
restart: always
environment:
- REDIS_HOSTS=local:redis:6379
ports:
- "8081:8081"
这是它给我的错误。
docker-compose up --scale redis=3
Creating network "ex2_default" with the default driver
WARNING: The "redis" service is using the custom container name "redis". Docker requires each container to have a unique name. Remove the custom name to scale the service.
Creating redis-dbms ...
Creating redis ... done
Creating redis ...
Creating redis ...
Creating redis-dbms ... done
ERROR: for redis Cannot create container for service redis: Conflict. The container name "/redis" is already in use by container "d4c93ae4ca68da0b6430e5eddc657d9dda0f40002c7a81c89368535df05eae24". You have to remove (or rename) that container to be able to reuse that name.
ERROR: for redis Cannot create container for service redis: Conflict. The container name "/redis" is already in use by container "d4c93ae4ca68da0b6430e5eddc657d9dda0f40002c7a81c89368535df05eae24". You have to remove (or rename) that container to be able to reuse that name.
【问题讨论】:
【参考方案1】:引发错误的原因如下: 链接:https://docs.docker.com/compose/compose-file/compose-file-v3/#container_name
由于 Docker 容器名称必须是唯一的,因此如果您指定了自定义名称,则无法将服务扩展到超过 1 个容器。尝试这样做会导致错误。
您可以在此处阅读更多内容:https://github.com/docker/compose/issues/3722
【讨论】:
谢谢!,解决方案非常简单。我刚刚删除了 container_name,它起作用了。hostname:
也几乎什么都不做,您应该同样能够将其删除。以上是关于使用 Docker Compose 创建同一服务的多个容器的主要内容,如果未能解决你的问题,请参考以下文章
从同一个 docker compose 中的 docker 容器拒绝连接