Tag: sockets

龙卷风/ graphlab无法在docker中分配请求的地址

运行gl.canvas.set_target('ipynb')在gl.canvas.set_target('ipynb')容器中抛出下面gl.canvas.set_target('ipynb') 。 即使使用gl.canvas.set_target('ipynb', port=28892) ,其中28892是一个开放的端口,错误保持不变。 ————————————————————————— error Traceback (most recent call last) <ipython-input-257-3f215a521352> in <module>() —-> 1 gl.canvas.set_target('ipynb') /opt/conda/envs/gl-env/lib/python2.7/site-packages/graphlab/canvas/utils.pyc in set_target(target, port) 102 # and to preserve backwards compatibility/other use cases 103 # (running a notebook exported to .py, for instance) –> 104 _active_target = targets[target]() 105 106 # track metrics on target /opt/conda/envs/gl-env/lib/python2.7/site-packages/graphlab/canvas/target.pyc in […]

跨主机沟通:大使模式与港口博览会

我找不到任何其他方式来build立两个Docker容器(此时)之间的跨主机通信,而不是使用这里提出的大使模式。 我想知道使用这种模式比简单使用Docker提供的端口展示有什么优点。 以下是我如何使用端口展示技术的示例: 节点A. ifconfig eth0 192.168.56.101 docker run -i -t -p 5558 –name NodeA ubuntu /bin/bash 然后,本地端口到Docker容器:5558映射到主机的物理端口49153。 (5558 – > 49153) 节点B. ifconfig eth0 192.168.56.103 docker run -i -t -p 5558 –name NodeB ubuntu /bin/bash 然后,本地端口,到Docker容器:5558映射到主机的物理端口49156。 (5558 – > 49156) *从Docker容器到物理端口的端口映射可以通过使用-p 5558:5558来强制 跨主机容器通信 然后NodeA可以通过以下IP地址与NodeB,容器到容器进行通信: 192.168.56.103:49156 而NodeB可以从容器内部监听端口5558。 结论 这似乎是一种直接的方式来实现这种沟通,虽然它非常像集装箱概念的破解。 我的问题是为什么使用一个选项而不是实际上打破了从主机隔离的概念?

在Docker中运行Lightttpd:ulimits not honored

我正在尝试在Docker容器中运行lighttpd(1.4.35),以便为大容量静态网站(无PHP等)提供服务。 运行一分钟后,错误日志将填充: (server.c.1444)[note]套接字被禁用,达到连接限制 我已经在/etc/security/limits.conf (并重新启动)中提高了root的限制: root soft nofile 4096 root hard nofile 32768 在我docker-compose.yml (相当于命令行中的–ulimit ): ulimits: nofile: soft: 4096 hard: 32768 在我的lighttpd.conf : server.max-fds = 8192 server.max-connections = 4096 但是当我运行lsof -n | grep -c lighttpd lsof -n | grep -c lighttpd我得到不高于128.如果我进入容器并运行ulimit -n我得到4096,如预期的那样。 运行ulimit -a返回: core file size (blocks, -c) unlimited data seg size (kbytes, […]

boot2docker shellinit命令在错误“请求套接字时出错:退出状态255”

按照http://boot2docker.io/的说明在OSX上安装boot2docker。 之后,开始申请。 在terminal中,boot2docker shellinit命令启动,并最终抛出此错误“错误请求套接字:退出状态255”。 试了boot2docker stop —> delete —> download —> init —> up。 它没有帮助。 我使用的版本是v1.3.1。 任何想法为什么它可能失败? 谢谢!

在Docker容器中打开DGRAM套接字失败(权限被拒绝)

我正在运行一个应用程序,它build立并发送ICMP ECHO请求到几个不同的IP地址。 该应用程序是用Crystal编写的。 当试图从晶体泊坞窗容器内打开一个套接字时,Crystal引发一个exception:权限被拒绝。 从容器内,我没有问题运行ping 8.8.8.8 。 在macos上运行应用程序,我没有问题。 阅读apparmor和seccomp上的https://docs.docker.com/engine/security/apparmor/和https://docs.docker.com/engine/security/seccomp/页面我确定find了解决scheme,但问题仍然没有解决,即使作为docker run –rm –security-opt seccomp=unconfined –security-opt apparmor=unconfined socket_permission 更新/编辑 :挖掘到capabilities(7) ,我添加了以下行到我的dockerfile: RUN setcap cap_net_raw+ep bin/ping试图让套接字被打开,但没有改变。 谢谢! 相关的水晶sockets代码,完整的工作代码示例如下: # send request address = Socket::IPAddress.new host, 0 socket = IPSocket.new Socket::Family::INET, Socket::Type::DGRAM, Socket::Protocol::ICMP socket.send slice, to: address Dockerfile: FROM crystallang/crystal:0.23.1 WORKDIR /opt COPY src/ping.cr src/ RUN mkdir bin RUN […]

Docker阻塞高负载的传出连接?

我们有一个node.js web服务器,它向外部API发送一些传出的http请求。 在docker上使用dokku运行。 加载一段时间后(30req / s),这些传出请求不再得到响应。 下面是我用常量req / s进行testing时所做的一个图表: incoming和outgoing是并发请求的数量(不是初始化请求的数量)。 (在图中很难看出来,但是在每次约10个请求时它是相当稳定的。) response time仅适用于外部请求。 你可以清楚地看到,他们突然开始失败(我们的1000毫秒超时)。 我们发送的请求越多,遇到这个问题的速度就越快,所以我们必须对每个请求都有一些限制。 我使用了netstat -ant | tail -n +3 | wc -l netstat -ant | tail -n +3 | wc -l netstat -ant | tail -n +3 | wc -l在主机上获得打开的连接数,但是只有〜450(大部分是TIME_WAIT )。 这不应该达到套接字限制。 我们也没有达到任何内存或CPU的限制。 我也尝试在Docker外的同一台机器上运行相同的应用程序, 它只发生在docker 。

fd://是什么意思在dockerd -H fd://

Docker守护进程文档为大多数设置build议使用以下hosts选项: dockerd -H fd:// 我猜fd代表文件描述符。 我不明白如何fd用于套接字通信。 我了解以下选项: -H unix:///var/run/docker.sock -H tcp://192.168.59.106 -H tcp://10.10.10.2 这些是unix域套接字和tcp套接字。 我知道如何使用这些套接字调用docker守护进程: docker -H tcp://0.0.0.0:2375 ps 但是,如果我使用-H fd://启动docker守护进程,则以下调用会给出错误: $ docker -H fd:// ps error during connect: Get http:///v1.26/containers/json: http: no Host in request URL 那么fd://的含义是什么? 有什么用吗?

在使用Docker时,ESTABLISHED连接不会出现在netstat中

我有一个运行在RHEL 7上的Docker容器,Docker 1.7.0。 在这个容器中运行的程序侦听端口5000上的TCP连接。在我的Dockerfile中,我放了EXPOSE 5000这个语句,并使用以下命令运行容器: docker run \ –name myProgram \ –detach \ –publish 5000:5000 \ –volume /home/docker/apps/myProgram/logs:/var/log/myProgram/ \ –volume /home/docker/apps/myProgram/conf:/usr/local/snnotificationreceiver/conf/ \ –restart always \ 10.167.152.15:5000/myProgram:1.0.0 当我在主机上执行netstat时,我看到了LISTEN套接字: [root@server bin]# netstat -naop | grep 5000 tcp6 0 0 :::5000 :::* LISTEN 33595/docker-proxy off (0.00/0/0) 我可以通过连接到端口5000上的主机IP地址来连接到应用程序,并且我发送到应用程序的数据到达。 我知道这一点,因为我在应用程序日志中看到它,应用程序也通过套接字发送数据。 不过,在docker主机上我看不到使用netstat的任何ESTABLISHED连接: [root@server bin]# netstat -naop | grep ESTABLISHED 我在客户端看到没有使用docker的ESTABLISHED连接: [root@client […]

ZeroMQ无法在上的Docker上使用.bind() – 地址已被使用。 为什么?

尝试在0.0.0.0:5555地址尝试在Docker容器中通过Rancher Cattle运行它时,ZeroMQ套接字遇到了一些问题。 每次我尝试运行它,我都会得到同样的错误: zmq.error.ZMQError:地址已被使用。 试图做我的EXPOSE 5555和EXPOSE 5555/tcp ,但它没有帮助我。 这是我的代码的一部分: … self.context = zmq.Context() self.socket = self.context.socket(zmq.PUB) self.socket.bind('tcp://%s:%d' % ('0.0.0.0', 5555)) … 也许有人有同样的问题。 如何解决?

/var/run/docker.sock无法在容器上运行centos 7

我正在启动一个容器,该容器运行一个bash脚本,在Centos 7.0.1406上使用docker 1.3.2在内部执行docker构build。 文件/命令在https://gist.github.com/wrabbit-revisited/1d70d0f1805be1848c08 。 docker构build需要访问docker套接字,所以我使用一个共同的技巧,根据http://nathanleclaire.com/blog/2014/07/12/10-docker-tips-and-tricks-that-will-make-你唱一首鲸鱼喜悦的歌 : -v /var/run/docker.sock:/var/run/docker.sock 在构build之前,我在脚本中运行一个检查: if [ -e "/var/run/docker.sock" ]; then echo "docker.sock found" else echo "docker.sock not found" fi 和“回声”显示docker.sock未find。 如果检查是使用sudo在容器外部完成的,则会被发现。 我尝试在“docker run”命令行中添加“–permissive = true”,但没有明显的改变。 这里有一些类似的问题引用: https : //github.com/dpw/selinux-dockersock 。 它的目标是Fedora / RHEL,但是也不能解决这个问题。 如果我使用“setenforce Permissive”和sestatus来确保selinux处于宽容模式,问题仍然没有得到解决。 我也尝试添加“–security-opt = label:type:docker_t”到docker命令行,按照https://github.com/jwilder/nginx-proxy/issues/40 。 没有明显的影响。 Docker的selinux策略在这里描述: http : //www.unix.com/man-page/centos/8/docker_selinux/ 。 很多的信息,但我不知道,如果selinux是造成这个问题。 如果我编辑/ etc / […]