docker-compose network_mode:"host"似乎不起作用



我尝试使用docker-compose.yml文件构建容器:

version: '2'
services:
     geonode:
        build: 
            context: .
        hostname: geonode
        container_name: geonode
        ports:
            - 8000:8000
        volumes:
            - .:/geonode/
        entrypoint:
            - /usr/bin/python
        command: manage.py runserver 0.0.0.0:8000
        network_mode: host

在我的Dockerfile中,我在FROM ubuntu:14.04之后运行apt-get update,但它失败了:Could not resolve 'archive.ubuntu.com'

我尝试了docker run -i -t --net=host ubuntu:14.04 /bin/bash,然后运行了apt-get update,它就工作了。因此,在我看来,docker compose中的network_mode和运行docker的--net=host的工作方式不同。

有人有解释吗?

在执行时,它至少在3.7版本中有效

services:
    my-app:
        container_name: my-app
        build: 
            context: .
            network: host
        network_mode: host
        command: /app/my-app

这些端口是过时的,因为所有端口都是"旧"端口;暴露";。

由于发布了这个答案,docker build --network现在是一个选项。所以你可以运行:

docker build --network host -t charmosz/geonode .

从compose文件2.2开始,这是compose:中的一个选项

version: '2.2'
services:
  geonode:
    image: charmosz/geonode
    build:
      context: .
      network: host
    ...

您可能看到了与网桥网络的网络冲突。在这种情况下;bip";可以通过在daemon.json文件中设置以下内容来更改docker为名为bridge的默认网桥网络使用的子网:

{ "bip": "172.16.100.1/24" }

您需要重新启动docker才能应用该更改。我最近介绍了这一点(请注意,前面的幻灯片显示了在Mac和Windows中配置daemon.json选项的位置)。

相关内容

最新更新