搬运工,撰写network_mode:“主机”似乎并没有工作

问题描述:

我尝试建立一个码头工人,compose.yml文件容器:搬运工,撰写network_mode:“主机”似乎并没有工作

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我跑apt-get updateFROM ubuntu:14.04后,但它失败: 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 run中的--net=host工作方式不同。

有人有解释吗?

我不知道为什么它会有所作为,但尝试使用引号,如文档中所示:

network_mode: "host"

如果不识别该属性,它会回落到默认,通常是“桥”。您也可以通过docker inspect <container name>来验证网络类型。

定义网络不是docker build命令的选项,仅在运行容器时使用,docker-compose只是docker引擎顶端的前端。因此,如果您无法通过主机上的桥接网络连接到互联网,我怀疑您无法在此建立图像。

因此,首先让桥接网络工作,然后尝试构建您的图像。如果你绝对不能让桥接网络工作,你可以通过在容器中手动运行你的命令来创建容器,然后将该容器提交给一个图像,但我不会推荐这个,因为它不是很好的重现性或者维护。