Tag: networking应用程序

Docker SDK获取networking接口以及ifindex

即使这个问题已经在几个不同的地方得到解答,但是还没有完整的答案。 其中一个问题是, 找出哪个networking接口属于docker集装箱 在Docker论坛上有一个关于这个的讨论 ,我也在下面添加了一些引用。 我正在尝试将dockernetworking接口映射到主机中的接口。 当docker容器启动时,它会创buildveth对,并将一个对等体放在主机的桥上,另一端放在docker容器中,如下所示。 这些接口之间的关系只是来自这些接口的ifindex。 如果我能得到主机vethxxx接口的vethxxx ,并将其与ifindex中的接口的ifindex比较,我可以build立相关性。 为了做到这一点,我必须访问find容器内的networking接口的ifindex, 为了做到这一点,我必须执行下面的事情, docker exec -it my-container cat /sys/class/net/eth1/iflink 为了做到这一点,必须保证一个容器中有一个shell可用。 有没有办法使用docker客户端(Go Lang Docker客户端)并列出容器内的networking接口,并获得这些接口的相应ifindexes。 与这些ifindexes ,然后我可以得到主机的接口。 如果这样的事情是不可能的,我可以读取正在运行的docker集装箱内的文件,或者复制到主机,使用给定的API客户端泊坞 下面更多的相关链接, docker0和eth0有什么关系? https://www.oreilly.com/learning/what-is-docker-networking#example-bridge-mode-networking

打开运行容器的界面(没有 – 特权)

怎样才能把一个正在运行的容器的接口记下来,记住它没有用 – 特权标志启动/部署? 我很清楚,如果容器运行的是–privileged标志,它将允许你将会抛出错误为“操作不允许”,如下所示: root@be90baf1d5f5:/# ip link delete eth0 RTNETLINK answers: Operation not permitted 我听说使用名称空间可以实现,但不是太多的想法。 注意:请不要提供链接到这个上下文的stackoverflow,我已经看到了他们。 我正在谈论一个没有 – 特权标志的正在运行的容器。 提前致谢 !

安装GeoIP模块,用于Docker的最新NGINX

我正在尝试创build一个包含GeoIP模块的nginx服务的docker镜像。 据我所知,运行apt-get install nginx与任何标志没有帮助包含–with-http_geoip_module模块在nginx安装。 所以我试图从nginx源码安装它 add-apt-repository ppa:nginx/development -y \ && echo "deb-src http://ppa.launchpad.net/nginx/development/ubuntu xenial main" >> /etc/apt/sources.list \ && apt-get update \ && apt-get build-dep nginx -y \ && cd /opt \ && mkdir tempnginx \ && cd tempnginx \ && apt-get source nginx \ 等等等等 GeoIP不能正常工作,因为我试图把它放在日志上,就像这样: nginx.conf user www-data; worker_processes 1; load_module modules/ngx_http_geoip_module.so; error_log […]

在Docker中映射Elasticsearch的端口

我想在Docker中启动一个Elasticsearch容器。 默认情况下,我几乎可以看到所有的东西 docker run -d -p 9200:9200 docker.elastic.co/elasticsearch/elasticsearch:5.5.1 现在是我的问题:为什么我们要在我们的主机networking上映射端口? 我了解端口映射,但我没有看到它的巨大优势。 在我看来,我总是会这样做: $ docker network create logging 20aa4c7bf2d8289d8cbd485c3e384f9371eed87204625998687c61e4bad27f14 $ docker run -d –name es –net logging docker.elastic.co/elasticsearch/elasticsearch:5.5.1 并通过使用它的名称(在这种情况下)连接到ES,并在同一networking中部署容器。 我认为我的ES在私人dockernetworking中更安全。 当你需要连接到elasticsearch的容器不在同一个networking中时,我发现端口映射有一个优点。 但是还有其他的好处,或者为什么总是显示端口映射?

如何访问Docker中的公有IP为不同的容器

希望你一切顺利。 上一条信息: 我使用的是Docker版本17.06.0-ce和CentOS 7.3 我正在运行基于微服务的应用程序,我需要在不同的公共ips上运行docker容器。 端口绑定对我来说不是一个选项(IP:80:80),因为微型工作者在没有任何端口绑定的容器内运行。 他们只是从队列中提取数据,处理它并重新发送到队列中。 我需要在不同的公共平台上并行运行这些工作,以更快地运行这个过程。 我可以启动不同的容器与同一个工作人员应用程序集,但他们都在同一个公共IP(docker集装箱私人IP是不同的)监听。 我怎样才能运行不同的公有IP的容器? 感谢致敬

docker – 组成不设置网关和IP地址

docker-compose容器无法连接到互联网的问题。 通过docker cli或kubelet手动创build的容器工作得很好。 这是在使用带有Calico覆盖的Kops创build的AWS EC2节点上(我认为这可能与其无关)。 这是docker组成: version: '2.1' services: app: container_name: app image: "debian:jessie" command: ["sleep", "99999999"] app2: container_name: app2 image: "debian:jessie" command: ["sleep", "99999999"] 这失败了: # docker exec -it app ping 8.8.8.8 PING 8.8.8.8 (8.8.8.8): 56 data bytes docker-compose container < – >容器工作(按预期): # docker exec -it app ping app2 PING app2 (172.19.0.2): 56 […]

如何从外部访问存储在Docker容器中的Elasticsearch?

我目前正在Docker容器中运行Elasticsearch(ES)5.5。 (见下文) curl -XGET 'localhost:9200' { "name" : "THbbezM", "cluster_name" : "elasticsearch", "cluster_uuid" : "CtYdgNUzQrS5YRTRT7xNJw", "version" : { "number" : "5.5.0", "build_hash" : "260387d", "build_date" : "2017-06-30T23:16:05.735Z", "build_snapshot" : false, "lucene_version" : "6.6.0" }, "tagline" : "You Know, for Search" } 我已经改变了elasticsearch.yml文件看起来像这样: http.host: 0.0.0.0 # Uncomment the following lines for a production cluster deployment #transport.host: […]

如何防止docker服务器IP地址离开内部群集networking?

介绍: 我最近看到一个群集运行在单个节点上,周期性地通过wireshark将内部IP地址泄露到外部站点。 在正常情况下,相同的数据包具有正确的外部“发件人”地址,并通过networking魔法到达容器。 题: 是否有一个平台独立的选项或一组选项,对于群集来说,它们不那么神奇,可能性能较差,但仍然保证了docker内部IP地址的可预测隔离? 背景: 显然这里的问题是内部IP不能被外部主机解决,所以当这个应用程序发生这种情况时,需要与外部世界进行交stream的应用程序会被外部世界抛弃一堆连接, 。 数据包泄漏在VXLans中不时发生,所以这个问题的答案部分可能不是特定的docker。

使用Dockernetworking获取ENOTFOUND错误

我有几个容器正在运行,并使用networking – –net标志。 这一切都工作正常,直到最近,现在在同一个networking中的容器不能相互交谈,我得到ENOTFOUND错误。 不知道如何debugging这一个大声笑,有没有人知道为什么会发生? FML 我在Docker版本上 Docker version 17.06.0-ce, build 02c1d87 这个问题在MacOS和Linux上都会发生。

Docker的Windows – 无法连接到默认的iis网站

我有一个Windows容器运行Microsoft / iis基础映像。 我使用以下方法构build了图像: 命令: docker build -t test-iis-image . 文件: 从微软/ iis EXPOSE 8080' 然后我运行一个容器使用: 命令: docker run -d -p 8080:8080 test-iis-image 我得到了容器的IP地址(例如172.18.167.181) 添加了一条路线: 命令 route /P add 172.0.0.0 MASK 255.0.0.0 10.0.75.1 然后尝试使用以下URL连接到容器: http://172.18.167.181:8080/ 我期待看到默认的IIS网页,但我得到的是: 尝试检索URL时遇到以下错误:> http://172.18.167.181:8080/ 连接到172.18.167.181失败。 系统返回:(110)连接超时 远程主机或networking可能已closures。 请再次尝试请求。 但是,当我ping通的IP地址,似乎find容器: ping 172.18.167.181 用32字节的数据Pinging 172.18.167.181: 来自172.18.167.181的回复:字节= 32时间<1ms TTL = 128 来自172.18.167.181的回复:字节= 32时间<1ms TTL […]