在docker-compose中使用主机网络

Jui*_*icy 5 networking docker docker-compose

我正在尝试使用建立两个网络的容器docker-compose。我希望其中一个网络是host网络(即:好像我正在运行docker run --net=host),另一个是用户定义的网络。

我尝试了这个:

version: '3'

networks:
  test:
    driver: bridge
  host:
    external: true

services:
  helloworld:
    image: python:3.6-alpine
    networks:
      - test
      - host
    cap_add:
      - NET_ADMIN
      - NET_RAW
    ports:
      - 0.0.0.0:8080:8080
    command: sh -c "cd /tmp && python -m http.server 8080"
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

$ docker-compose up
Removing blah_helloworld_1
Starting 8743618e8af4_blah_helloworld_1 ... error

ERROR: for 8743618e8af4_blah_helloworld_1  network-scoped alias is supported only for containers in user defined networks

ERROR: for helloworld  network-scoped alias is supported only for containers in user defined networks
ERROR: Encountered errors while bringing up the project.
Run Code Online (Sandbox Code Playgroud)

JSO*_*C11 1

根据文档

  • target : 容器内的端口
  • Publication : 公开暴露的端口
  • 协议:端口协议(tcp 或 udp)
  • mode:用于在每个节点上发布主机端口的主机,或用于要负载平衡的集群模式端口的入口。

例子:

 ports:
   - target: 8080
     published: 8080
     protocol: tcp
     mode: host
Run Code Online (Sandbox Code Playgroud)