docker 是否使用服务名称或容器名称来解析 docker compose 中的服务引用?
Does docker use service name or container name to resolve service reference in docker compose?
redis:
image: redis
container_name: my-redis
如果我有上面的 docker compose.yml
文件,那么我需要在其他地方,例如,引用 redis 主机,我应该在客户端中使用 redis
还是 my-redis
连接字符串?
假设您在同一个 docker 网络中,您可以同时使用两者来寻址 redis。
services:
redis:
image: redis
container_name: my-redis
容器名称将是my-redis,但它也被注册到network aliasredis。
当您只有一个容器时,别名可能没有用,或者它的用处可能不明显。当您部署超过 1 replica.
的内容时,它开始变得有用
您可以通过检查容器看到这一点。
docker inspect my-redis
您也可以保留容器名称,让 compose 使用默认容器名称 <project>-<service>-<replica>
,即 myproject-redis-1
。事实上,当你想部署多个副本时,这是必需的,因为你不能部署多个同名容器。
name: myproject
services:
redis:
image: redis
deploy:
replicas: 2
通常,人们使用服务名称而不是容器名称。
redis:
image: redis
container_name: my-redis
如果我有上面的 docker compose.yml
文件,那么我需要在其他地方,例如,引用 redis 主机,我应该在客户端中使用 redis
还是 my-redis
连接字符串?
假设您在同一个 docker 网络中,您可以同时使用两者来寻址 redis。
services:
redis:
image: redis
container_name: my-redis
容器名称将是my-redis,但它也被注册到network aliasredis。
当您只有一个容器时,别名可能没有用,或者它的用处可能不明显。当您部署超过 1 replica.
的内容时,它开始变得有用您可以通过检查容器看到这一点。
docker inspect my-redis
您也可以保留容器名称,让 compose 使用默认容器名称 <project>-<service>-<replica>
,即 myproject-redis-1
。事实上,当你想部署多个副本时,这是必需的,因为你不能部署多个同名容器。
name: myproject
services:
redis:
image: redis
deploy:
replicas: 2
通常,人们使用服务名称而不是容器名称。