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

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

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 ,它的工作原理。 所以在我看来, --net=host -compose中的network_mode和--net=host -run中的--net=host不能以相同的方式工作。

有人有解释吗?

我不确定为什么它会有所作为,但请尝试使用文档中显示的引号:

network_mode: "host"

如果它不能识别该属性,它将回落到默认值,通常是“桥”。 您也可以通过docker inspect <container name>来validationnetworkingtypes。

使用docker build命令定义networking不是一个选项,仅在运行容器时使用,而docker-compose只是docker引擎顶端的前端。 所以,如果你不能通过你的主机上的桥接networking连接到互联网,我怀疑你将无法在那里build立图像。

因此,首先让桥接networking工作,然后尝试构build您的图像。 如果绝对无法使桥接networking正常工作,可以通过在容器中手动运行命令来创build容器,然后将该容器提交给图像,但是我不推荐这样做,因为它不是很好的重现性,或者维护。