Tag: sockets

如何使用Docker容器进行TCP传出连接?

My Go应用程序通过tls.Dial()来交换数据,从而实现TLS连接 。 从主机运行时,它工作正常: 但是当从Docker容器运行应用程序时,传出连接似乎不起作用。 该应用程序无限期挂起。 注1 :使用docker run -p $(docker-machine ip):2500:2500 …相同的行为docker run -p $(docker-machine ip):2500:2500 … 注意2 :虚拟机没有额外的端口转发设置,除了docker-machine默认虚拟机的默认设置。 使用Dockerfile构buildDocker镜像: FROM golang:latest RUN mkdir -p "$GOPATH/src/path/to/app" # Install dependencies RUN go get github.com/path/to/dep VOLUME "$GOPATH/src/path/to/app" EXPOSE 2500 WORKDIR "$GOPATH/src/path/to/app" CMD ["go", "run", "main.go"] 主机是OS X运行docker机 。 题 我怎样才能使TCP传出连接工作?

访问jenkins奴隶容器内的docker

我的问题基本上是容器中的Access Docker套接字和从(jenkins)docker 容器中 访问docker主机的组合 我的目标 运行Jenkins完全docker化,包括dynamic奴隶,并能够在奴隶内创builddocker集装箱。 除了最后一部分,如果Unix docker-sock正确地暴露给Jenkins主,那么所有东西都已经在工作,这要归功于https://github.com/maxfields2000/dockerjenkins_tutorial 。 问题 与dynamicconfiguration的从站不同,主站通过docker-compose启动,因此可以正确访问UNIX套接字。 对于dynamic生成的从站,这种方法不起作用。 我试图转发访问docker像 VOLUME /var/run/docker.sock VOLUME /var/lib/docker 在build设的形象。 不幸的是到目前为止,当我尝试访问docker.sock中的Permission denied (socket: /run/docker.sock)时,我得到了一个Permission denied (socket: /run/docker.sock)奇怪的是是:从机中的用户是root。 那为什么我不能访问docker.sock ? 或者我怎么能在–privileged标志烧,这样的权限被拒绝的问题会消失?

我如何使用Docker容器内的python套接字连接到服务器?

我是新来的Docker,我想在一个容器中运行我的Python程序。 我的程序需要通过套接字连接到服务器才能正常工作。 我已经创build了我的程序的泊坞窗图像及其相应的容器,但是当它到达下面的行时就失败了,我不知道为什么。 sock.connect((host, port)) 它显示了这个错误消息: [Errno -2]姓名或服务未知 它在遏制者之外运行得很好。 我可能错过了一些非常明显的东西,但是我看不见它。 提前致谢。

Docker无法通过套接字“/var/run/mysqld/mysqld.sock”连接到本地MySQL服务器(2)Ubuntu

我正在玩docker,并将我的本地mysql安装到docker容器,并连接MySql-Workbench,以便我可以查看数据库(试验)这里是我跑的命令。 docker run -d –name alldb-mysql -v /var/lib/mysql:/var/lib/mysql -e MYSQL_USER=root -e MYSQL_PASSWORD=password -p 3306:3306 mysql:latest 我停止了我的容器并将其删除后,我无法启动/重新启动mysql(本地安装)。 当我运行sudo /etc/init.d/mysql start它返回 [….] Starting mysql (via systemctl): mysql.serviceJob for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details. failed! 所以我查了systemctl status mysql.service mysql.service – MySQL Community Server Loaded: […]

使用golang docker引擎创build容器时出错

我在Go中创build一个项目,我使用“github.com/docker/docker/client”和“github.com/docker/docker/api/types”,但是当我尝试创build一个容器时,我得到以下错误: 错误:2016/10/03 22:39:26 containers.go:84:在连接时出错:发布https://%2Fvar%2Frun%2Fdocker.sock/v1.23/containers/create :http:服务器给了HTTP响应到HTTPS客户端 我不明白为什么会发生这种情况,它只发生在使用新的golang泊坞窗引擎后(旧的“github.com/docker/engine-api”现在已被弃用)。 代码没有任何复杂的东西,所以我想知道我是否缺less一些东西: resp, err := cli.Pcli.ContainerCreate(context.Background(), initConfig(), nil, nil, "") if err != nil { return err } 而被调用的initConfig执行以下操作: func initConfig() (config *container.Config) { mount := map[string]struct{}{"/root/host": {}} return &container.Config{Image: "leadis_image", Volumes: mount, Cmd: strslice.StrSlice{"/root/server.py"}, AttachStdout: true}} 这里也是我的dockerfile 从debian 维护者Leadis之旅 LABEL Description =“这个docker图像用于编译和执行用户的程序。” LABEL版本=“0.1” VOLUME / root / host / […]

无法使用Docker COntainers将客户端连接到服务器

python 服务器代码: #!/usr/bin/python import socket s = socket.socket() host = socket.gethostname() port = 12345 s.bind((host, port)) s.listen(5) while True: c, addr = s.accept() print 'Got connection from', addr c.send('Thank you for connecting') c.close() Python 客户端代码 #!/usr/bin/python import socket s = socket.socket() host = socket.gethostname() port = 12345 s.connect((host, port)) print s.recv(1024) s.close Dockerfile: FROM python:2-onbuild […]

docker集装箱内的长期连接间歇性死亡

我有一个运行在kubernetes中的docker镜像,它使用了一个使用MySQL的长期连接的Python应用程序。 连接将会由于底层套接字在看起来随机的时间段之后失去与外部主机的连接而死亡。 典型的持续时间在10到30分钟之间。 我testing了这个docker容器本地和其他地方在我的生产环境(kubernetes之外)没有遇到任何连接错误。 以下是运行映像的docker版本和uname输出: $ docker –version Docker version 1.12.6, build 78d1802 $ uname -a Linux c1b1f31a4048 3.13.0-123-generic #172-Ubuntu SMP Mon Jun 26 18:04:35 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux 以下是主机的uname输出: Linux ip-10-2-110-119 4.4.41-k8s #1 SMP Mon Jan 9 15:34:39 UTC 2017 x86_64 GNU/Linux 我已经看到了人们遇到长寿命连接死亡的问题,因为其他容器的启动和停止,最终导致主机上所有容器的networking丢失。 我试图通过手动启动和停止其他容器在kubernetes之外重现此场景,但无法重现连接失败。 我有一个理论认为,由于主机上长tcp_keepalive_timeout(默认为7200秒),我们的NAT正在捕捉连接。 为了确保在连接闲置时发送TCP保持连接的数据包,我已经大大减less了这些数据,但是这没有任何作用。 我实际上已经目睹了连接丢失在从MySQLstream多行的中间。 是否应该使用特定的networkingconfiguration来确保长期连接不会在此环境中死亡?

Docker中的Docker执行器在Gitlab-Runner中不起作用(无法连接到docker deamon)

所以我最近尝试了Docker和Gitlab Runner,但似乎我无法得到它的工作。 这是我有的日志: Running with gitlab-runner 10.0.2 (a9a76a50) on my-docker (c588e5e2) Using Docker executor with image docker:git … Starting service docker:dind … Pulling docker image docker:dind … Using docker image docker:dind ID=sha256:b9145b364a203c0afc538ca615b3470e41729edfb7338017f5d4eeb5b13b2d90 for docker service… Waiting for services to be up and running… Using docker image sha256:7961fbf38d6f827265aed22fe41a1db889c54913283b678a8623efdda9573977 for predefined container… Pulling docker image docker:git … […]

如何发送消息到主机上运行在docker容器中的子套接字?

我有一个发行商在端口N上的host上运行。 装入容器会很痛苦。 我有一个用户在一个容器内运行。 问题是,如果我第一次在host上运行发布者,那么我不能在docker run -d -p N:N publisher端口docker run -d -p N:N publisher (其中N是端口号) Error response from daemon: Cannot start container 41202025441bf02ad5c8cf2a85fb1f1bd04c2211e648f5ec446442f9af4a6274: Error starting userland proxy: listen tcp 0.0.0.0:5570: bind: address already in use 如果我第一次启动容器,那么在发布者中将会有一个Address already in use的Address already in use错误。 我想这个问题是,当docker从容器暴露端口到主机在某种程度上绑定到他们。 所以没有人可以绑定到主机的端口。 我可以在容器中运行发布服务器吗?

有一个直接的方式来获得来自unix套接字的html响应(像curl一样)吗?

我需要创build一个Docker(1.13)容器,它将作为docker swarm中的一个服务运行,以安排作业(比如在需要时执行“docker exec”的全局crontab)。 我是一个相当系统pipe理员,而不是一个编码器,所以我开始用bash,curl和jq来做这件事。 它有效,但是肯定有改进的余地。 为了给你一个我正在处理的mumbo-jumpo的概念,下面是我传递给docker套接字以查明服务在哪里运行的一些片段: # Get local docker node ID: curl -s –unix-socket /var/run/docker.sock http:/v1.26/info | jq -r '.Name + " " + .Swarm.NodeID' # List swarm node ID's: curl -s –unix-socket /var/run/docker.sock http:/v1.26/nodes | jq -r '.[] | .Description.Hostname + " " + .ID' # List swarm services: curl -s –unix-socket /var/run/docker.sock […]