Docker为堆栈

时间:2017-09-29 08:44:58

标签: docker docker-compose docker-ucp

我正在将一个小筹码部署到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:

我有什么选择?

4 个答案:

答案 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