如何使用主机网络进行Docker撰写?

时间:2019-06-13 14:11:30

标签: docker docker-compose

我想将docker compose与主机网络结合使用。

我有一个可访问本地REST API的Docker容器。通常我会运行

docker run --net=host -p 18080:8080 -t -i containera

可以访问运行在http://127.0.0.1:8080上的主机REST api。由于我想缩放容器containera,因此我发现docker compose可以缩放容器。但是documentation中的docker compose文件不起作用。泊坞窗容器不查询REST API。

我尝试了以下撰写文件,但该属性

version: "3"
services:
  web:
    image: conatinera:latest
    network_mode: "host"
    deploy:
      replicas: 1
      resources:
        limits:
          cpus: "0.5"
          memory: 4G 
      restart_policy:
        condition: on-failure
    ports:
      - "18080:8080"

,但属性network_mode被忽略/不允许。消息

Ignoring unsupported options: network_mode

4 个答案:

答案 0 :(得分:1)

docker-compose的等效配置使用network_mode键:https://docs.docker.com/compose/compose-file/#network_mode

您应该在network_mode中将"host"设置为docker-compose.yml

答案 1 :(得分:0)

您使用哪个平台? host模式仅在Linux AFAIK中工作。如果network_mode无法正常工作,请尝试network: host

version: '3.4'
serivces:
  some_service:
  build:
    network: host

答案 2 :(得分:0)

我认为您应该像这样定义docker-compose文件: 这只是一个示例,请阅读文档: https://docs.docker.com/compose/compose-file/#network-configuration-reference

?- time(test(99999989)).
% 3 inferences, 0.016 CPU in 0.016 seconds (100% CPU, 192 Lips)
true.

?- time(test2(99999989)).
% 107 inferences, 0.000 CPU in 0.000 seconds (?% CPU, Infinite Lips)
true.

?- time(test(99999999999900000001)).
% 4 inferences, 0.000 CPU in 0.000 seconds (81% CPU, 190476 Lips)
ERROR: Stack limit (1.0Gb) exceeded

?- time(test2(99999999999900000001)).
% 267 inferences, 0.000 CPU in 0.000 seconds (87% CPU, 1219178 Lips)
true.

答案 3 :(得分:0)

您正在混合在撰写和群集部署中都无效的选项。

如果要使用docker-compose up进行部署,则您的撰写文件应如下所示:

version: "3"
services:
  web:
    image: conatinera:latest
    network_mode: "host"        
    restart: on-failure
在构建模式下,

Te选项deploy将被忽略,而在使用主机模式网络时,将忽略ports选项。我建议不要使用主机模式网络,并在另一个容器中使用反向代理来平衡已缩放的容器。


(当您明确说明自己没有使用集群部署时,可以忽略答案的这一部分)。

如果您正在使用群体部署,则您的撰写文件应如下所示:

version: "3.4"
services:
  web:
    image: conatinera:latest
    deploy:
      replicas: 1
      resources:
        limits:
          cpus: "0.5"
          memory: 4G 
      restart_policy:
        condition: on-failure
    networks:
      - host

networks:
  host:
    name: host
    external: true

再次,已发布的端口和主机模式网络不混合。也可能是因为所有容器都将尝试绑定到同一端口,所以扩展失败。我建议不要使用主机模式网络,并让docker负载均衡您的副本。