我正在将一个小筹码部署到UCP
我面临的一个问题是为 service1 命名容器。
我需要为容器设置一个静态名称,因为 mycustomimageforservice2
使用它使用(版本3)Compose文件在群集模式下部署堆栈时,将忽略container_name option 。
我必须使用版本:3 撰写文件。
version: "3"
services:
service1:
image: dockerhub/service1
ports:
- "8080:8080"
container_name: service1container
networks:
- mynet
service2:
image: myrepo/mycustomimageforservice2
networks:
- mynet
restart: on-failure
networks:
mynet:
我有什么选择?
答案 0 :(得分:4)
您不能强制compame中的containerName,因为它的设计允许扩展服务(通过更新副本的数量),而不能使用名称。 一个服务可以使用servicename(http://serviceName:internalServicePort)访问另一个服务,而docker将为您完成剩下的工作(例如解析为实际的容器地址,在副本之间进行负载平衡......)。
这适用于覆盖
的默认网络类型答案 1 :(得分:0)
您可以在docker-compose.yml文件中遇到链接服务的问题。 类似的东西:
version: "3"
services:
service1:
image: dockerhub/service1
ports:
- "8080:8080"
networks:
- mynet
service2:
image: myrepo/mycustomimageforservice2
networks:
- mynet
restart: on-failure
links:
- service1
networks:
mynet:
在docker-compose.yml中使用链接参数,您将允许某些服务使用容器名称访问另一个服务,在这种情况下,由于links参数,service2将建立与service1的连接。我不确定你为什么使用网络,但没有必要使用links参数。
答案 2 :(得分:0)
如果必须使用版本3,但不能使用群集,则可以在命令中添加--compatibility。
答案 3 :(得分:0)
container_name选项,因为容器名称必须唯一。 https://docs.docker.com/compose/compose-file/#container_name