添加主机中的 IP 地址无效:“”+ 无法对 FILTER 链进行编程:iptables 失败
Invalid IP address in add-host: "" + Failed to program FILTER chain: iptables failed
我正在使用另一个人打包在 Docker 容器中的科学代码。我不是很熟悉容器、图像等背后的所有魔法。如果我需要添加一些依赖项,我只是通过 运行 一些简单的命令来使用它,比如 docker-compose up
或 docker-compose up --build
在代码中。
所以直到昨晚一切都很正常。我正在 运行 进行了一个模拟,花了整整一个晚上,但我看到结果并不理想,所以我只是按 ctrl + C
2 或 3 次来终止处理。当我尝试通过 docker-compose up
再次启动模拟时,我遇到了一个错误,不幸的是,我现在不记得了。另外,st运行ge 东西——那时候我无法连接到 Internet。我重新启动,互联网再次正常工作,我再次尝试 运行 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.
我通过 运行ning:
删除了所有图像、容器和卷
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)
然后我通过 运行ning 重建了所有内容: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 文档对此事没有任何说明。而且我没有找到任何有关它的信息。感谢任何帮助。
以下内容可能有助于理解问题:
$ 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 上也很少发生。
您可以在禁用防火墙之前尝试以下步骤:
export DOCKERHOST=$(ifconfig | grep -E "([0-9]{1,3}\.){3}[0-9]{1,3}" | grep -v 127.0.0.1 | awk '{ print }' | cut -f2 -d: | head -n1)
docker-compose down --remove-orphans
docker-compose build
docker-compose up
我做的有点类似于@noreddine-belhadj-cheikh,但命令略有不同,可能在 Debian 和其他发行版上也能更好地工作。我还有一个执行以下操作的启动脚本 (up.sh):
export DOCKERHOST=$(ip addr show | grep "\binet\b.*\bdocker0\b" | awk '{print }' | cut -d '/' -f 1)
docker-compose up
我正在使用另一个人打包在 Docker 容器中的科学代码。我不是很熟悉容器、图像等背后的所有魔法。如果我需要添加一些依赖项,我只是通过 运行 一些简单的命令来使用它,比如 docker-compose up
或 docker-compose up --build
在代码中。
所以直到昨晚一切都很正常。我正在 运行 进行了一个模拟,花了整整一个晚上,但我看到结果并不理想,所以我只是按 ctrl + C
2 或 3 次来终止处理。当我尝试通过 docker-compose up
再次启动模拟时,我遇到了一个错误,不幸的是,我现在不记得了。另外,st运行ge 东西——那时候我无法连接到 Internet。我重新启动,互联网再次正常工作,我再次尝试 运行 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.
我通过 运行ning:
删除了所有图像、容器和卷
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)
然后我通过 运行ning 重建了所有内容: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 文档对此事没有任何说明。而且我没有找到任何有关它的信息。感谢任何帮助。
以下内容可能有助于理解问题:
$ 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 上也很少发生。
您可以在禁用防火墙之前尝试以下步骤:
export DOCKERHOST=$(ifconfig | grep -E "([0-9]{1,3}\.){3}[0-9]{1,3}" | grep -v 127.0.0.1 | awk '{ print }' | cut -f2 -d: | head -n1)
docker-compose down --remove-orphans
docker-compose build
docker-compose up
我做的有点类似于@noreddine-belhadj-cheikh,但命令略有不同,可能在 Debian 和其他发行版上也能更好地工作。我还有一个执行以下操作的启动脚本 (up.sh):
export DOCKERHOST=$(ip addr show | grep "\binet\b.*\bdocker0\b" | awk '{print }' | cut -d '/' -f 1)
docker-compose up