我尝试使用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选项的位置)。