Articles of 泊坞窗

尝试浏览映射到Docker容器的端口时获取“ERR_CONNECTION_REFUSED”

我拉了一个Docker镜像: $ docker pull ghost 并从图像运行一个容器: $ docker run –name test-ghost -p 8080:2368 -d ghost 7d984e974f6a75fe18b3d397b5c8f0a428928a2be9df83f0d61a679aa5f537fc 我的理解是, -p开关将主机(8080)上的一个端口映射到Docker(2368)内部的一个端口,这样我就可以从外部docker(即从我的主机)访问在Docker中运行的Web服务器。 但是,当我尝试浏览Chrome中的任何以下地址时,从我的主机: http://localhost:8080/ http://0.0.0.0:8080/ http://127.0.0.1:8080/ 我得到以下错误: This webpage is not available ERR_CONNECTION_REFUSED 这似乎可能是一个连接问题,而不是容器内的问题,因为当我检查容器内运行的进程时,看起来NodeJS正在运行: $ docker top test-ghost UID PID PPID … CMD docker 4290 1028 … npm docker 4324 4290 … sh -c node index docker 4325 4324 […]

Docker:限制访问某些IP地址的正确方法

我有一个Docker容器暴露端口3306到互联网。 我想限制访问某些公共IP地址。 作为一个例子,我们使用1.2.3.4。 作为一个附加条件,我希望规则能够在重启Docker守护进程并重新启动服务器的过程中生存下来。 这使我可以使用iptables-persistent ( iptables-save / iptables-restore )来重新启动服务器时恢复规则,而不会影响dockerd启动。 我尝试了以下内容: 修改FORWARD链: iptables -I FORWARD -p tcp –dport 3306 -j REJECT iptables -I FORWARD -p tcp –dport 3306 -s 1.2.3.4 -j ACCEPT 这在启动Docker守护进程后完成。 当重启守护进程时,Docker在链的顶部插入额外的规则,我的自定义规则最终被忽略。 修改DOCKER链: iptables -N DOCKER # if chain does not yet exist iptables -I DOCKER -p tcp –dport 3306 -j REJECT iptables […]

将RDMAnetworking设备传递给docker集装箱

我想通过infiniband到docker集装箱,以便我可以通过ipoib运行一些高性能的应用程序,并使用rdma。 目前,我正在用xen虚拟机来做这件事。 现在我正在考虑使用CoreOS和docker作为一个更轻,更容易pipe理替代。 我有一个IPoIB设备ib0,其静态IP分配给10.10.10.10。 我已经设法得到这暴露在一个docker集装箱与以下内容: docker run –net = host –device = / dev / infiniband / uverbs0 –device = / dev / infiniband / rdma_cm -t -i ubuntu:14.04 / bin / bash 太好了,那是有效的。 docker集装箱内有ib0。 现在让我们假设我有一个双端口HCA。 在主机上,这些显示为ib0&ib1,并分配了两个ip。 10.10.10.10/ib0和10.10.10.11/ib1 现在我想通过ib0到第一个容器,ib1到第二个。 使用上面的方法都会出现在两个容器中,因为–net = host选项。 但是,不指定它意味着设备根本不出现。 另一种情况是我有很多使用SR-IOV来通过infiniband设备到Xen虚拟机的机器。 我怎么能通过一个虚拟的functioninfiniband设备到docker集装箱,并出现? 注意:pipe道工作在这种情况下不起作用,但是如果我理解得更好,它可能会被黑客做我想做的事情。 我只是不太明白它在做什么。

除了HTML页面之外,NGINX都给出了404错误

我将nginx设置为泊坞窗容器中的反向代理,以链接到容器外部的站点。 我有一个虚拟主机configuration设置如下(我尝试添加^家庭助理的位置之前): server { # simple reverse-proxy listen 80; location / { proxy_pass http://192.168.1.99:6789; } location ^~ /home-assistant { proxy_pass http://192.168.1.99:8123/; } location /calibre-web/ { proxy_pass http://192.168.1.99:8181/; } } 对于家庭助理和口径网站,页面加载,但我得到404错误的所有其他项目(图像,CSS等)。 如果我尝试点击应用程序中的链接,它将链接到192.168.1.99 /文件,而不是192.168.1.99 / site-folder /文件 。 以下是日志中的一些logging(注意一个200响应和其他404响应)。 我在这里做错了什么? 先谢谢您的帮助。 192.168.1.6 – randy [15/Aug/2016:03:15:42 +0000] "GET /frontend/panels/dev-template-0a099d4589636ed3038a3e9f020468a7.html HTTP/1.1" 404 199 "http://192.168.1.99/home-assistant/" "Mozilla/5.0 (X11; CrOS x86_64 8350.60.0) […]

pipe理守护进程:没有可用的前台模式

我试图用supervisord来pipe理一个进程,但是这个进程没有在前台运行的选项:它总是守护进程。 (这是Zabbix服务器)。 有没有办法与主pipepipe理守护进程? 任何工具,将使其运行在前台? 或者,也许,不知何故使用pidfile?

通过主机名将ssh连接转发到docker容器

我已经进入了一个非常具体的情况,虽然还有其他方法可以做到这一点,但我还是有点沉迷于此,想find一种方法来做到这一点: 背景 假设我有一台服务器运行多个服务,并将其隐藏在独立的docker集装箱中。 由于大多数这些服务都是http,我正在使用一个nginx代理来向每个服务公开特定的子域名。 例如,节点服务器在端口80绑定到主机上的127.0.0.1:8000的Docker容器上运行。 我将在nginx中创build一个虚拟主机,将所有对myapp.mydomain.com请求代理到http://127.0.0.1:8000 。 这样一来,除了通过myapp.mydomain.com之外,docker容器不能从外部访问。 现在我想以gogs.mydomain.com指向gogs容器的方式启动一个gogs docker容器。 所以我启动这个在端口8000绑定到127.0.0.1:8001 gogs容器 。 和一个nginx网站代理请求gogs.mydomain.com到http://127.0.0.1:8001 ,它运作良好… 然而,gogs是一个git容器,我也想通过[email protected]:org/repo访问repos,但是不能用于当前的设置。 一种方法是将容器的端口22绑定到主机上的端口0.0.0.0:8022 ,然后git ssh url可以是[email protected]:8022/repo 。 (这似乎并没有工作;当我推到这样的uri的起源,git要求gogs.mydomain.com用户git的密码 – 而不是gogs.mydomain.com:8022 – 但这可能是我'这个问题做错了,也不在这个范围之内,不过,我也希望对此有任何诊断) 问题 我主要关心的是,我希望ssh端口<gogs container>:22被代理,就像我使用nginx代理http端口; 即任何SSH连接gogs.mydomain.com传递到容器的端口22 。 现在我不能将容器的ssh端口绑定到主机的ssh端口,因为主机上已经有一个sshd运行了。 此外,这将意味着任何连接到*.mydomain.com传递到容器的sshd。 我想要任何SSH连接: mydomain.com host.mydomain.com或mydomain的IP地址被接受并转发到主机上的sshd gogs.mydomain.com或git.mydomain.com被接受传递到gogs容器上的sshd *.mydomain.com (其中*是上述可能性以外的任何内容)被拒绝 如果是http,我可以通过nginx轻松完成这项工作。 有没有办法做到这一点的SSH? (也想出去,问:有没有一种方法可以完成任何 tcp服务?) 任何对我在这里尝试的方式的洞察也是受欢迎的。 我不介意被告知什么时候我想做的事完全是愚蠢的。 我脑海里已经有了什么: 也许我可以共享主机上的sshd套接字容器作为ro卷? 这将意味着容器内的sshd可以获取到*.mydomain.com所有连接。 有没有办法让容器内的sshd 拒绝除gogs.mydomain.com或git.mydomain.com之外的所有连接? 然而,主机上的sshd会收集所有到*.mydomain.com的连接,包括gogs.mydomain.com ; 所以会有冲突。 我不知道,我实际上没有尝试过。 我应该尝试吗?

防火墙规则不限制对Docker Web Apps的访问

我遇到了一个问题,即在Docker容器中运行在我们系统上的应用程序暴露的端口仍然对全世界开放,尽pipeiptablesconfiguration旨在限制访问。 在我看来,这个问题可能与docker守护进程在启动时向iptables添加规则有关。 我也意识到–icc=true|false , –ip-forward=true|false –icc=true|false –ip-forward=true|false和–iptables=true|false但我不确定这些标志的组合应该应用。 我试过–icc=false和–icc=false –ip-forward=false但都没有达到预期的效果。 我–iptables=false使用–iptables=false因为–iptables=false守护进程明确地添加了许多规则,如果仍然需要,我必须手动进行configuration。 这是docker守护进程启动之前的规则状态: Chain INPUT (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT all — lo any anywhere anywhere 0 0 REJECT all — !lo any anywhere loopback/8 reject-with icmp-port-unreachable 0 0 DROP tcp — any any […]

为什么docker-machine在重新启动时清除数据?

我在OSX上使用Docker Toolbox。 我创build了一个用于存储持久数据的数据卷容器: https : //docs.docker.com/userguide/dockervolumes/#creating-and-mounting-a-data-volume-container 。 我检查了这个数据确实存储在boot2docker虚拟机(由docker-machine创build)上,而不是在容器上,所以它会一直存在。 然而,“docker-machine restart”会清除虚拟机上的这个自定义数据。 我无法find正在发生的事情的文档。 我发现有一个论坛post提到/ var / lib / docker中的数据将被保留,但是我找不到任何官方文档指出这一点,而且考虑到上面的持久存储指南并不使用这个path,甚至提到你的数据将被删除。 这是预期的,如果是这样的话,是否有正确的path来存储持久性数据的官方文档? 编辑:添加失败的senario的例子 $ docker-machine ssh alt docker@alt:~$ docker run -v /data:/var/lib/mysql –name mydata busybox sh -c "echo 'hello' > /var/lib/mysql/hello" docker@alt:~$ docker run –rm –volumes-from mydata busybox sh -c "cat /var/lib/mysql/hello" hello docker@alt:~$ exit $ docker-machine restart alt […]

可公开路由的IPv6 linux容器

我的目标是为每个docker集装箱设置可路由的公有IPv6地址。 我希望能够使用IPv6协议连接到我的容器和从我的容器中出来。 我正在使用Linode,并且已经分配了一个公共IPv6池: 2600:3c01:e000:00e2:: / 64 routed to 2600:3c01::f03c:91ff:feae:d7d7 这个“路由到”地址是由dhcp自动configuration的: # ip -6 addr show eth0 3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000 inet6 2600:3c01::f03c:91ff:feae:d7d7/64 scope global mngtmpaddr dynamic valid_lft 2591987sec preferred_lft 604787sec inet6 fe80::f03c:91ff:feae:d7d7/64 scope link valid_lft forever preferred_lft forever 我为ipv6.daaku.org设置了一个AAAAlogging,以便于处理: # nslookup -q=AAAA ipv6.daaku.org ipv6.daaku.org has AAAA address 2600:3c01:e000:e2::1 为了testing,我手动分配了这个地址: # ip -6 […]

如何使用Dockerconfiguration自定义DNS服务器?

我需要添加几行到/etc/hosts以供我的web-app在Docker容器中工作。 Docker的/etc/hosts是只读的。 我正在尝试使用dnsmasq: 从Ubuntu的:14.04 #… 运行apt-get install -y -q dnsmasq 运行echo'listen-address = 127.0.0.1 >> >> /etc/dnsmasq.conf RUN echo'resolv-file = / etc / resolv.dnsmasq.conf'>> /etc/dnsmasq.conf 运行echo'conf-dir = / etc / dnsmasq.d'>> /etc/dnsmasq.conf 运行echo'user = root'>> /etc/dnsmasq.conf 运行echo'nameserver 8.8.8.8'>> /etc/resolv.dnsmasq.conf 运行echo'nameserver 8.8.4.4'>> /etc/resolv.dnsmasq.conf RUN echo'address =“/ mydomain / 127.0.6.1”>> >> /etc/dnsmasq.d/0hosts 运行服务dnsmasq启动 但是,我无法让Docker使用我的DNS服务器: $ docker –dns = […]