当docker-demon启动时,它会向iptables添加一些规则。当通过iptables -F
我删除所有规则时,必须停止并重新启动docker
demon以重新创建dockers规则。
有没有办法让docker重新添加其他规则?
最好的方法是重启docker服务,然后将docker规则重新添加到iptables中。(上DEB基:sudo service docker restart
)
但是,如果您只想恢复这些规则而无需重新启动服务,我保存了我的信息,以便您可以检查并对其进行调整以适合您,然后使用 sudo iptables- restore ./iptables-docker-ports.backup
编辑并保存到 ./iptables-docker-ports.backup
# Generated by iptables-save v1.4.21 on Thu Apr 30 20:48:42 2015
*nat
:PREROUTING ACCEPT [18:1080]
:INPUT ACCEPT [18:1080]
:OUTPUT ACCEPT [22:1550]
:POSTROUTING ACCEPT [22:1550]
:DOCKER - [0:0]
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
-A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
-A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
-A POSTROUTING -s 172.17.0.1/32 -d 172.17.0.1/32 -p tcp -m tcp --dport 80 -j MASQUERADE
-A DOCKER ! -i docker0 -p tcp -m tcp --dport 3001 -j DNAT --to-destination 172.17.0.1:80
COMMIT
# Completed on Thu Apr 30 20:48:42 2015
# Generated by iptables-save v1.4.21 on Thu Apr 30 20:48:42 2015
*filter
:INPUT ACCEPT [495:53218]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [480:89217]
:DOCKER - [0:0]
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A DOCKER -d 172.17.0.1/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 80 -j ACCEPT
COMMIT
# Completed on Thu Apr 30 20:48:42 2015
我有一个mongodb服务和一个使用docker compose运行的测试服务: 在我试图运行的start.sh脚本中: 但我得到了以下错误: 我的问题是:为什么会发生错误?Dependes_on属性不应该自动包含服务依赖项吗?正如这里提到的: depends_on 表示服务之间的依赖关系,这有两个效果: docker compose up将按依赖顺序启动服务。在下面的示例中,db和redis将在
问题内容: 我有3个简单的微服务(mysql,apirest,gui),我开始使用docker-compose: 在 MySQL的 和 apirest 微服务没有问题可以进行通信(我可以连接到我的数据库 apirest 使用 的MySQL 作为主机名。 但是,当我尝试使用 apirest* 作为主机名执行http请求(角度)时,我在 gui 微服务中收到以下错误: * 无法加载资源:net ::
问题内容: 我试过在Windows 7上安装docker(使用boot2docker)。但是控制台只是突然存在,我看不到错误,更不用说运行任何命令了。 在安装过程中,我尝试安装和不安装VirtualBox。我也尝试卸载并重新安装docker和virtualbox。似乎没有任何作用。 这是我运行时看到的控制台错误: 问题答案: 请检查您的BIOS的VT-x设置。根据您提供的日志,有一个错误:
我的困惑是wile创建镜像主机端口在Dockerfile中被指定为8080,但当从同一个镜像主机端口运行容器时,被指定为3000。那么这个容器将在哪个主机端口运行,为什么?
问题内容: 从文档: Linux上配置文件的默认位置是/etc/docker/daemon.json 但是我没有在新的docker安装中安装它: 问题答案: Linux上的默认配置文件路径如您所说,但默认情况下不存在。您可以自己编写一个文件,然后在其中放置其他docker daemon配置内容,而不用将这些配置选项传递到命令行中。您甚至不必这样做,因为这是默认路径,但对于正在检查系统的其他人来说,
问题内容: ubuntu 16.04,已安装nvidia-docker,正在运行tensorflow容器,python 2.7 我想在容器内运行一个简单的python代码。如下图所示 但是当我运行这个时,这个错误来了 _tkinter.TclError:没有显示名称,也没有$ DISPLAY环境变量 并根据该站点https://github.com/moby/moby/issues/8838, 我