Tag: sockets

如何将数据从主机转发到Docker容器?

我正在使用Docker容器的项目。 Docker安装在Windows 10主机上。 该项目的目标是将主机上接收到的数据包转发到docker集装箱,以便集装箱function利用这些数据包并转发给其他链接的集装箱。 例如,考虑有2个容器(容器1和容器2)运行一些任意的function。 必须达到以下要求: Host(Windows 10)—–>Container 1——->Container 2——->Host 其中——>表示数据包转发(在容器function工作之后) 到目前为止,在刚收到数据包的主机上使用Wireshark接收数据包,并显示数据包的详细信息。 这些收到的数据包如何从主机,从一个容器转发到Docker容器? 可以使用Scapy(主机到容器)来完成吗? 我知道容器networking可以用来连接不同的容器,但是数据包可以在它们之间转发吗? 另外,在上述任何情况下,在主机和容器内部都可以使用python或java socket编程吗? 像libpcap这样的库可以用于这个目的吗?

从HAProxy泊坞窗容器安装haproxysockets

我想给同行容器访问/var/run/haproxy.sock 。 不幸的是,当我尝试通过与指定卷绑定安装来执行此操作时,会引发错误。 是可以与其他容器共享haproxy.sock ? 我想是这样,所以我想知道我在这里失去了哪一块。 可能是权利 – 但如何正确设置? worker1 | <7>haproxy-systemd-wrapper: executing /usr/local/sbin/haproxy -p /run/haproxy.pid -f /usr/local/etc/haproxy/haproxy.cfg -Ds worker1 | [ALERT] 182/075644 (6) : Starting frontend GLOBAL: error when trying to preserve previous UNIX socket [/var/run/haproxy.sock] worker1 | <5>haproxy-systemd-wrapper: exit, haproxy RC=1 我有haproxy.cfg中的以下configuration: global maxconn 8204 tune.ssl.default-dh-param 2048 stats socket /var/run/haproxy.sock mode 660 level […]

HAProxy 1.8 – 在HAProxy软重装期间传递套接字连接

我正在使用kubernetes load-lanacer (这里haproxyconfiguration是每10秒写入一次并重新启动)。 由于我想在重新加载HAProxy时传递套接字连接,所以我更改了HAProxy的Dockerfile,使其使用HAProxy 1.8-dev2版本。 使用的图像是haproxytech / haproxy-ubuntu:1.8-dev2 。 此外,我在template.cfg文件的全局部分下添加了以下行(这是写入HAProxyconfiguration的模板) stats socket /var/run/haproxy/admin.sock模式660级别的pipe理员显示侦听器 此外,我更改haproxy_reload文件中的重新加载命令,如下所示 haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -x /var/run/haproxy/admin.sock -sf $(cat /var/run/haproxy.pid) 一旦我运行docker镜像,我得到以下错误(kubectl create -f rc.yaml –namespace load-balancer) W1027 07:13:37.922565 5 service_loadbalancer.go:687]因为错误而重新启动kube-system / kube-dns:错误重新启动haproxy – [警告] 299/071337(21):我们没有得到预期的套接字数(期待1347703880得到0) [警告] 299/071337(21):无法从旧程序中获取套接字! :退出状态1 FYI:我评论了template.cfg文件中的统计套接字行,并运行docker镜像以validation重新启动命令是否标识套接字。 发生同样的错误。 看起来像软重启命令不能识别由HAProxy创build的统计套接字。

如何修复_wapi_connect错误查找在Win10作为主机的Ubuntu 16.04 Hyper-V VM上运行的CentOS 5 docker脚本的套接字句柄?

我在Windows 10桌面上运行Ubuntu 16.04作为Hyper-V虚拟机(VM)。 在Ubuntu VM上,我正在运行一个docker脚本。 docker图片是一个CentOS 5。 docker脚本更新NuGet.exe,并在构build我们的源代码之前安装一堆包。 该脚本成功恢复并安装了一些软件包,但在尝试安装一个软件包时特别失败。 命令: mono nuget.exe install packages.config -ExcludeVersion -OutputDirectory /tools 从命令输出片段: Feeds used: https://api.nuget.org/v3/index.json …. Restoring Nuget package xUnit.Runner.Console.2.2.0 GET …nupkg OK …nupkg 236ms Installing xUnit.Runner.Console.2.2.0. Adding package 'xUnit.Runner.Console.2.2.0' Added package 'xunit.Runner.Console.2.2.0' Restoring Nuget package XXXX GET …nupkg OK …nupkg Installing XXXX **_wapi_connect: error looking up socket handle […]

Docker只读套接字卷

对docker工人来说并不陌生,并且正在倾听这里给出的谈话 (相关部分从14:40到大约16:00)。 相关部分讨论了为套接字使用只读卷与MySQL服务器进行通信。 他介绍的情况是,它阻止了被黑客入侵的服务器删除了MySQL套接字。 我只是无法理解这意味着要处理什么安全威胁。 他说,黑客所能做的就是“select我的电子邮件地址”(可能意味着他可以访问所有的数据)。 这不是一个巨大的安全漏洞? 其次,这种方法比使用TCP / IP进行连接的优点是什么? 这是否仅仅是因为你不必在你的容器中暴露该端口? 根据我的理解,它提供的唯一安全性是防止它们从只读服务器中删除unix域套接字。 如果这种情况发生,从安全的angular度来看,这实际上是一个大问题吗?

如何显示在Docker容器中打开特定套接字的进程ID?

我在Ubuntu 14.04上安装了Docker 1.5,并从容器中执行ps -eaf来显示容器中的进程列表 但是当使用ss -lap或nestat – lp ss -lap时,我无法获得打开特定端口的进程的PID。 有没有办法解决这个问题,以便知道哪个PID在容器内打开了一个特定的端口?

在Docker中连接到mongoDB套接字

我有一个docker容器,其中运行Rails和mongoDB。 我将mongoconfiguration设置为使用unix套接字进行连接,因为真正需要连接的唯一资源(rails应用程序)正在容器中运行。 每当我尝试连接到mongo shell我得到这个错误: [main]错误:尝试在主机“127.0.0.1:27017”上运行命令“isMaster”时出现networking错误 我有我的mongoDBconfiguration像这样设置: #mongod.conf – 3.4 storage: dbPath: "/var/lib/mongodb" directoryPerDB: true journal: enabled: true systemLog: destination: file path: "/var/log/mongodb/mongodb.log" logAppend: true timeStampFormat: iso8601-utc processManagement: fork: true net: bindIp: 127.0.0.1 port: 27017 wireObjectCheck: false unixDomainSocket: enabled: true net: ssl: mode: requireSSL PEMKeyFile: /etc/ssl/certs/db/mongodb.pem security: authorization: enabled 还有其他人遇到这个问题吗? 在docker容器中有没有mongoDBconfiguration的最佳做法?

socket.gaierror gaierror:名称或服务未知 – pika rabbitMQ

我试图从托pipe在localhost:5000上的python服务器发送消息到RabbitMQ服务器(使用RabbitMQ的docker镜像),但是出现以下错误: socket.gaierror gaierror:[Errno -2]名称或服务未知 我正在使用命令运行RabbitMQ的docker镜像,其中“rabbithost”是我正在使用的主机名: sudo docker run -d –hostname rabbithost –name rabbitmq -p 15672:15672 -p 5672:5672 -p 5671:5671 rabbitmq:3-management 这里是给出错误的Python代码: def send_to_queue(message): credentials = pika.PlainCredentials('guest', 'guest') parameters = pika.ConnectionParameters('rabbithost', 5672, '/', credentials) connection = pika.BlockingConnection(parameters) channel = connection.channel() channel.queue_declare(queue='hello') channel.basic_publish(exchange='', routing_key='hello',body=message) connection.close() return "Message Sent! " 错误是在线: 连接= pika.BlockingConnection(参数) 主要是因为参数的参数。 我无法find此错误的确切解决scheme。

主机客户端脚本从dockerized服务器脚本获取空string响应

我在mac osx上运行Docker版本17.06.2-ce-mac27(19124)。 我试图运行容器中的套接字和容器主机中的客户端脚本的简单的python服务器脚本。 看起来客户端脚本可以连接到端口但不触发服务器脚本。 当我从容器外部运行客户端脚本时,我得到一个空的响应: port_test_server $ ./echo_client.py 收到'' 并且容器中运行的服务器脚本没有输出。 当我从容器中运行客户端脚本时,我得到了预期的响应 port_test_server $ docker container exec 7c7d1fb7e614 ./echo_client.py 收到“有爱就有生命” 以及在容器中运行的服务器脚本的预期输出: port_test_server $ docker run -it –expose 8887 -p 8887:8887 ptserver 由('127.0.0.1',38694) 因此,服务器脚本在容器中运行,而从容器外部运行的客户端脚本正在连接到端口,但似乎服务器脚本没有被触发。 这里是代码: Docker文件:(将echo_client.py和echo_server.py拷贝到workdir中) FROM debian:jessie-slim ENV DEBIAN_FRONTEND noninteractive RUN apt-get update && apt-get install -y locales \ && localedef -i en_US -c -f UTF-8 […]

将安全漏洞添加到/var/run/docker.sock 666权限

我无法通过jenkins构build我的dockerfile,直到我将666个权限添加到/var/run/docker.sock。 现在,我知道这比将“jenkins”用户添加到“sudoers”列表更安全。 然而, 还有更好的办法吗? 这个额外的许cocoa以用于我的缺点是什么?