为什么使用DOCKER_OPTS =“ – iptables = false”中断docker-compose的DNS发现?
当我把这一行添加到我的/ etc / default / docker
DOCKER_OPTS="--iptables=false"
那么DNS不再起作用。 由docker工人创build的一组容器不再能够find对方:
version: '2' services: elasticsearch: image: elasticsearch:latest volumes: - ./esdata:/usr/share/elasticsearch/data kibana: image: kibana:latest environment: - ELASTICSEARCH_URL=http://elasticsearch:9200
当iptables = false被设置时,上面的停止工作。 kibana容器不能'find'elasticsearch容器。 但是,当删除(和docker引擎重新启动),那么这工作正常。
为什么是这样?
(更重要的是,为什么当使用ufw时,iptables = false不是默认设置?)
谢谢
从https://docs.docker.com/v1.5/articles/networking/#between-containers
一个集装箱是否可以与世界交stream受两个因素的制约。
主机是否愿意转发IP数据包? 这由
ip_forward
系统参数来pipe理。 如果此参数为1
则数据包只能在容器之间传递。 通常,您只需将Docker服务器的默认设置为--ip-forward=true
,服务器启动时,Docker将为您设置ip_forward为1。你的
iptables
允许这个特定的连接? 如果您在守护进程启动时设置了--iptables=false
,Docker将永远不会更改您的系统iptables
规则。 否则,Docker服务器会将转发规则附加到DOCKERfilter链。Docker不会删除或修改DOCKERfilter链中的任何预先存在的规则。 这允许用户预先创build任何需要进一步限制访问容器的规则。
从https://docs.docker.com/engine/installation/linux/ubuntulinux/#enable-ufw-forwarding
如果您在运行Docker的同一主机上使用UFW(不复杂的防火墙),则需要进行其他configuration。 Docker使用桥来pipe理容器networking。 默认情况下,UFW会丢弃所有转发stream量。 因此,当启用UFW时Docker运行,您必须适当地设置UFW的转发策略。
我认为你的情况的整个配方是:
-
DEFAULT_FORWARD_POLICY="ACCEPT"
-
DOCKER_OPTS="--iptables=false"
- 在iptables中configurationNAT
有关更多详细信息,您可以在ufw防火墙后面看到Running Docker
- docker工人:中间容器是如何形成的
- Docker容器似乎“inheritance”了主机ec2的实例configuration文件。 怎么样?
- 如何在不使用ADD或COPY指令的情况下将文件添加到Dockerfile中的图像
- 如何在容器types为Docker的Mesosphere中创buildpod?
- “没有这样的文件或目录”这个Dockerfile有什么问题?
- 是否有任何解决scheme执行二进制在从主机挂载的容器?
- 泊坞窗。 如何运行一个烧录服务器的主文件,在较深的文件结构中启动服务器
- (Kubernetes + Minikube)无法从本地registry中获取Docker镜像
- (dockerfile)为flag -v:指定错误模式