AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 764082
Accepted
wishi
wishi
Asked: 2016-03-17 04:20:10 +0800 CST2016-03-17 04:20:10 +0800 CST 2016-03-17 04:20:10 +0800 CST

如何使用端口映射管理 Docker 容器?

  • 772

我安装了 ELK Docker 容器。

我使用以下参数运行它:

sudo docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -p 5000:5000 -it --name elk sebp/elk

检查检查:

sudo docker ps

CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                                                                                                      NAMES
4f42137c954d        sebp/elk:latest     "/usr/local/bin/star   22 hours ago        Up 22 hours         0.0.0.0:5000->5000/tcp, 0.0.0.0:5044->5044/tcp, 0.0.0.0:5601->5601/tcp, 0.0.0.0:9200->9200/tcp, 9300/tcp   elk            

乔,看起来不错。

这是 Docker 容器所在的 KVM 来宾的外部接口:

marius@elk:~$ ifconfig eth0 eth0 Link encap:Ethernet HWaddr 52:54:00:15:cf:f2
inet addr:192.168.100.134 Bcast:192.168.100.255 Mask:255.255.255.0

但是端口 5044(例如用于 Elastic Beats)在 KVM 网络接口中关闭:

marius@elk:~$ nc -v 192.168.100.134 5044
nc: connect to 192.168.100.134 port 5044 (tcp) failed: Connection refused

原因似乎是,我制造了混乱:

marius@elk:~$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
DOCKER     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain DOCKER (1 references)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             172.17.0.4           tcp dpt:5000
ACCEPT     tcp  --  anywhere             172.17.0.4           tcp dpt:5044
ACCEPT     tcp  --  anywhere             172.17.0.4           tcp dpt:5601
ACCEPT     tcp  --  anywhere             172.17.0.4           tcp dpt:9200

并且重启后 Docker 容器的新 IP 是172.17.42.1和0.4

marius@elk:~$ /sbin/ifconfig docker0 Link encap:Ethernet HWaddr a6:3d:01:38:7a:6a
inet addr:172.17.42.1 Bcast:0.0.0.0 Mask:255.255.0.0

那么,如何以某种方式重新启动/管理 Docker 容器,以免遇到 IPtables 冲突

我该如何解决这个问题,而不会每次都造成 Docker / IPtables 混乱?我不想手动清除 Docker 的 iptables。

iptables
  • 1 1 个回答
  • 747 Views

1 个回答

  • Voted
  1. Best Answer
    Sobrique
    2016-03-22T03:34:19+08:002016-03-22T03:34:19+08:00

    首先也是最重要的 - 这是因为您的操作有点误解。Docker 容器在 docker 网络中具有动态 IP 地址。如果您尝试并依靠它是静态的,那么您就是在要求痛苦。

    所以不要 - 只是习惯这样的想法,虽然容器必须有 IP 地址才能工作,但你永远不应该直接引用它们。您有多种方法可以避免这种情况:

    • docker inspect+ 将环境变量传递给容器。
    • 使用较新的 docker (1.10+) 你有一个名称服务
    • haproxy 可以动态地将流量重新路由到一系列 IP 地址,因此您可以使用 ++ 之类的东西haproxy来confd“etcd检测”容器位置,并动态地将新条目添加到 haproxy 配置中。
    • 2

相关问题

  • OpenVPN 的 Linux IP 转发 - 正确的防火墙设置?

  • iptables 单个规则中的多个源 IP

  • 存储 iptables 规则的规范方法是什么

  • 使用 iptables 和 dhcpd 进行端口转发

  • 根据 Apache 日志数据自动修改 iptables 以阻止行为不良的客户端

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve