docker - 添加主机 : "" + Failed to program FILTER chain: iptables failed 中的 IP 地址无效

标签 docker docker-compose host

我正在使用由另一个人打包在 Docker 容器中的科学代码。我不是很熟悉容器、图像等背后的所有魔法。我只是通过运行一些简单的命令来使用它,比如 docker-compose updocker-compose up --build如果我需要在代码中添加一些依赖项。
所以一切都很正常,直到昨晚。我正在运行一个花了一整夜的模拟,但我看到结果不正常,所以我只是按 ctrl + C 杀死了处理过的程序。 2 或 3 次。当我尝试通过 docker-compose up 再次启动模拟时我遇到了一个错误,不幸的是,我现在想不起来了。另外,奇怪的事情 - 在那一刻我无法连接到互联网。我重新启动,互联网再次正常工作,我尝试运行 docker-compose up再次,我得到以下输出:

WARNING: The DOCKERHOST variable is not set. Defaulting to a blank string.
Creating alcor_alcor_1 ... 
alcor_cassandra_1 is up-to-date
Creating alcor_alcor_1 ... error

ERROR: for alcor_alcor_1  Cannot create container for service alcor: invalid IP address in add-host: ""

ERROR: for alcor  Cannot create container for service alcor: invalid IP address in add-host: ""
ERROR: Encountered errors while bringing up the project.

我通过运行删除了所有图像、容器和卷:docker rm $(docker ps -a -f status=exited -q)docker rmi $(docker images -a -q)docker volume rm $(docker volume ls -f dangling=true -q)
然后我通过运行来重建一切:docker-compose build --no-cache没有抛出错误。我跑了docker-compose up再次出现同样的错误:invalid IP address in add-host: ""然后我再次重复我的步骤:删除所有图像、容器和卷,重建所有内容并尝试再次运行。现在每次它向我展示这个:
WARNING: The DOCKERHOST variable is not set. Defaulting to a blank string.
Creating network "alcor_default" with the default driver
ERROR: Failed to program FILTER chain: iptables failed: iptables -I FORWARD -o br-231cf5f5b939 -j DOCKER: iptables v1.4.14: Couldn't load target `DOCKER':No such file or directory

Try `iptables -h' or 'iptables --help' for more information.
  (exit status 2)

这可能是什么原因,我该如何解决?我可以提供任何其他信息来帮助理解这一点吗? Google 和 Docker 文档在这个问题上没有说什么。我没有在 SO 上找到任何关于它的信息。任何帮助表示赞赏。

以下是可能有助于理解问题的内容:
$ docker version
Client:
 Version:      17.06.0-ce
 API version:  1.30
 Go version:   go1.8.3
 Git commit:   02c1d87
 Built:        Fri Jun 23 21:27:03 2017
 OS/Arch:      linux/amd64

Server:
 Version:      17.06.0-ce
 API version:  1.30 (minimum version 1.12)
 Go version:   go1.8.3
 Git commit:   02c1d87
 Built:        Fri Jun 23 21:22:34 2017
 OS/Arch:      linux/amd64
 Experimental: false

docker-compose.yml
version: '3'

services:
  alcor:
    build: .
    image: lycantropos/alcor:latest
    entrypoint: "/alcor/docker-entrypoint.sh"
    volumes:
      - .:/alcor/
    extra_hosts:
      - "dockerhost:$DOCKERHOST"  # for debugging
    command:
      # Here I omitted many options and arguments
      - simulate
    environment:
      - CASSANDRA_RPC_ADDRESS=cassandra
      - CASSANDRA_RPC_PORT=9042

  cassandra:
    image: cassandra:latest
    volumes:
      - cassandra-data:/var/lib/cassandra

volumes:
  cassandra-data:

编辑:我又试了一次。我清理了所有东西,重新启动并重建,第一个错误返回。

最佳答案

首先,在 docker-compose.yml 我不得不改变行

- "dockerhost:$DOCKERHOST"  # for debugging


- "dockerhost:172.17.0.1"

其中 172.17.0.1 被称为 bridge network gateway .

它并没有完全解决第二个错误的问题。但是有帮助的是运行以下命令:
sudo ufw disable
sudo systemctl restart docker

其中第一个禁用防火墙。

看起来这是 Ubuntu 特有的问题,因为我在 Linux Mint 上从来没有遇到过这个问题,而在 Debian Wheezy 上这种情况很少发生。

关于docker - 添加主机 : "" + Failed to program FILTER chain: iptables failed 中的 IP 地址无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45033688/

相关文章:

Java - DefaultHttpClient 和 "Host" header [Apache HttpComponent]

iphone - 应首先验证什么 - hostReachability 还是 netReachability?

windows - docker 说 : No connection could be made because the target machine actively refused it

docker - 如何确保 docker 仅用于我的任务

docker - 如何显示Nunit从Windows容器到TeamCity的结果?

docker - 在单台机器上自动部署dockerized应用程序

node.js - docker compose 与 docker run - Node 容器

asp.net - 将主机与 SQL 分开后出现错误 "Your connection to this site is not private!"

docker - 如何从 docker 缓存中删除特定项目?

docker - Docker守护程序错误响应:创建安装时出错-权限被拒绝