Articles of 泊坞窗

限制与iptables的docker集装箱外部连接的步骤?

我的目标是将访问docker容器的权限限制在几个公共IP地址上。 有一个简单的,可重复的过程来完成我的目标? 在使用Docker的默认选项时只理解iptables的基础知识,我发现它非常困难。 我想运行一个容器,使其对公众互联网可见,但只允许select主机的连接。 我期望设置REJECT默认的INPUT策略,然后只允许来自我的主机的连接。 但是Docker的NAT规则和链路阻碍了我的INPUT规则。 鉴于以下假设,有人可以提供一个如何实现我的目标的例子吗? 在eth0上主机公共IP为80.80.80.80 在eth1上主机私有IP 192.168.1.10 docker run -d -p 3306:3306 mysql 阻止除主机4.4.4.4和8.8.8.8之外的与主机/容器3306的所有连接 我很高兴将容器绑定到本地ip地址,但需要指导如何正确设置iptables转发规则,从而避免docker进程和主机重新启动。 谢谢!

使用主机的Postfix从Docker容器发送邮件

我正在运行Ubuntu 14.04(Linux)服务器。 我已经在服务器上很好地安装和configuration了Postfix和OpenDKIM ; 我可以使用echo hi | sendmail root等命令向自己发送电子邮件 echo hi | sendmail root ,postfix / opendkim将添加Message-Id , Date和DKIM-Signature等标题,将电子邮件转发到我的个人电子邮件地址,一切正常。 现在我想创build一个在Docker容器中运行的应用程序,并且可以轻松地发送电子邮件。 特别是,我不想担心添加像Message-Id这样的头文件,而且我也不想在容器本身内部进行非常多的configuration或软件安装。 什么是最好的方法来做到这一点? 有没有办法让容器在主机上运行sendmail exectuable? 我尝试使用端口25上的SMTP协议从一个容器连接到Postfix,但是Postfix似乎以不同的方式处理接收到的消息; 我认为它没有添加任何标题,所以邮件被彻底拒绝作为gmail的垃圾邮件(它甚至不够好被放置到我的垃圾邮件文件夹)。 这里的maillog内容 Sep 28 23:35:52 dantooine postfix/smtpd[4306]: connect from unknown[172.17.0.95] Sep 28 23:35:52 dantooine postfix/smtpd[4306]: DD457889B: client=unknown[172.17.0.95] Sep 28 23:35:52 dantooine postfix/cleanup[4309]: DD457889B: message-id=<> Sep 28 23:35:52 dantooine spamd[3175]: spamd: […]

Iptables规则集,以便Docker容器可以访问主机IP上的服务

我有麻烦访问从docker集装箱的主机专用接口(IP)。 我相当肯定,这是关系到我的Iptables规则(或者路由)。 当我添加–net=host标志docker run ,一切正常。 同样,当我指定INPUT策略遵循宽泛的-P INPUT ACCEPT ,事情也按我的预期工作。 然而,这些是我不想要的和不安全的选项,我想避免。 由于它不是特定于我的服务(DNS),所以我排除了这个问题,因为与docker结合search会在不同的(stream行的)问题区域中生成search结果,从而增加search结果的噪音。 也链接的Docker容器不是一个可行的select,因为某些容器需要运行与–net =主机选项,防止链接,我想在可能的情况下创build一个一致的情况。 我有以下的Iptables规则。 我假设的是CoreOS,Digital Ocean和Docker的组合。 -P INPUT DROP -P FORWARD ACCEPT -P OUTPUT ACCEPT -N DOCKER -A INPUT -i lo -j ACCEPT -A INPUT -i eth1 -j ACCEPT -A INPUT -m conntrack –ctstate RELATED,ESTABLISHED -j ACCEPT -A INPUT -p tcp -m tcp –dport 22 […]

为什么运行服务器的Docker容器将端口暴露给外部世界,即使所述端口被iptables阻塞?

我在运行Docker容器的MySQL时遇到问题。 我的testing图像是从以下Dockerfile构build的: # See: https://index.docker.io/u/brice/mysql/ FROM ubuntu:12.10 MAINTAINER Joni Kahara <[email protected]> # Because docker replaces /sbin/init: https://github.com/dotcloud/docker/issues/1024 RUN dpkg-divert –local –rename –add /sbin/initctl RUN ln -s /bin/true /sbin/initctl RUN apt-get update RUN apt-get upgrade -y RUN apt-get -y install mysql-server RUN sed -i -e"s/^bind-address\s*=\s*127.0.0.1/bind-address = 0.0.0.0/" /etc/mysql/my.cnf RUN /usr/bin/mysqld_safe & \ sleep 10s && \ […]

docker代理过程的要点是什么? 为什么需要用户空间的tcp代理?

我注意到,每个发布的端口都有docker-proxy进程。 这个过程的目的是什么? 为什么需要这个用户空间的tcp代理? $ ps -Af | grep proxy root 4776 1987 0 01:25 ? 00:00:00 docker-proxy -proto tcp -host-ip 127.0.0.1 -host-port 22222 -container-ip 172.17.0.2 -container-port 22 root 4829 1987 0 01:25 ? 00:00:00 docker-proxy -proto tcp -host-ip 127.0.0.1 -host-port 5555 -container-ip 172.17.0.3 -container-port 5555 以及由docker创build的一些相关的iptable规则: $ sudo iptables -t nat -L -n -v Chain […]