标签: docker-networking

获取与docker Network关联的网桥名称

我正在使用"docker network create --d bridge mynet"创建一个docker网络.我想获得与此docker网络关联的网桥名称.

我知道我可以使用"-o"来提供桥名.例如:"docker network create --d bridge -o com.docker.network.bridge.name = mybridge mynet".这种方法适用于普通的桥驱动程序,但在我的情况下,我使用ovs驱动程序因此我启动网络作为"docker network create --d ovs mynet".如果我在ovs驱动程序的情况下使用"-o"它不起作用.

请建议我一种方法来获得与网络相关联的桥名称.在创建网络时创建的新桥,使用它创建的桥具有随机名称,我可以使用"ifconfig"命令查看它.

networking docker docker-networking

5
推荐指数
1
解决办法
398
查看次数

Docker编写yml静态IP寻址

我有这样的docker-compose.yml(这里不是完整列表):

version: '2'

services:

  nginx:
    build: ./nginx/
    ports:
      - 8080:80
    links:
      - php
    volumes_from:
      - app
    networks:
      app_subnet:
        ipv4_address: 172.16.1.3

  php:
    build: ./php/
    expose:
      - 9000
    volumes_from:
      - app
    networks:
      app_subnet:
        ipv4_address: 172.16.1.4

    networks:
      app_subnet:
        driver: bridge
        ipam:
        config:
          - subnet: 172.16.1.0/24
          gateway: 172.16.1.1
Run Code Online (Sandbox Code Playgroud)

之后docker-compose up我得到了这样的错误:

仅当连接到具有用户配置子网的网络时,才支持用户指定的IP地址

所以我正在创建子网 docker network create --gateway 172.16.1.1 --subnet 172.16.1.0/24 app_subnet

但这并不能解决问题,因为docker-compose会动态创建名为dev_app_subnet的子网.并且我的子网没有使用 - 我收到同样的错误.这样做的主要目的是为nginx服务分配静态IP - 从etc/hosts文件打开我的项目web url.

docker-compose docker-networking

5
推荐指数
3
解决办法
1万
查看次数

Docker断开所有容器与docker网络的连接

我有docker网络"my_network".我想删除这个docker网络docker network rm my_network.在此之前,我应该断开我的所有容器与此网络.我可以使用docker network inspect并获得输出

[
    {
        "Name": "my_network",
        "Id": "aaaaaa",
        "Scope": "some_value",
        "Driver": "another_value",
        "EnableIPv6": bool_value,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "10.0.0.0/1"
                }
            ]
        },
        "Internal": false,
        "Containers": {
            "bbb": {
                "Name": "my_container_1",
                "EndpointID": "ENDPOITID1",
                "MacAddress": "MacAddress1",
                "IPv4Address": "0.0.0.0/1",
                "IPv6Address": ""
            },
            "ccc": {
                "Name": "my_container_2",
                "EndpointID": "ENDPOINTID2",
                "MacAddress": "MacAddress2",
                "IPv4Address": "0.0.0.0/2",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]
Run Code Online (Sandbox Code Playgroud)

如果我只有几个容器可以手动断开,但如果我有50个容器我有问题.如何使用单个或多个命令断开此网络中的所有容器?

bash docker docker-networking

5
推荐指数
1
解决办法
2353
查看次数

docker无法识别default-address-pools

我正在尝试配置docker-compose默认使用不同的网络范围,所以我按照https://github.com/moby/moby/pull/29376的说明进行操作

但是,我收到以下错误:

无法使用文件/etc/docker/daemon.json配置Docker doker守护程序:以下指令与任何配置选项都不匹配:default-address-pools

这是daemon.json的内容 - 它是取自#29376的样本.

{
  "default-address-pools": [
    {
      "scope": "local",
      "base": "172.80.0.0/16",
      "size": 24
    },
    {
      "scope": "global",
      "base": "172.90.0.0/16",
      "size": 24
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

请指教.

我的环境:

# uname -a
Linux gfn-classroom 4.4.0-109-generic #132-Ubuntu SMP Tue Jan 9 19:52:39 UTC 
2018 x86_64 x86_64 x86_64 GNU/Linux

# docker --version
Docker version 17.12.0-ce, build c97c6d6

lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.3 LTS
Release:        16.04
Codename:       xenial
Run Code Online (Sandbox Code Playgroud)

docker docker-compose devops docker-networking

5
推荐指数
2
解决办法
3036
查看次数

如何将 Docker 容器中运行的 Grafana 连接到主机上运行的 Prometheus 数据源(在 Docker for Mac 上)?

我在以下位置启动了 Prometheus 服务器localhost:57475/metrics

在此处输入图片说明

使用以下 Go 代码:

package main

import (
    "net/http"

    "contrib.go.opencensus.io/exporter/prometheus"
    log "github.com/sirupsen/logrus"
    "go.opencensus.io/plugin/ochttp"
    "go.opencensus.io/stats/view"
)

func main() {
    stop := make(chan struct{})

    server := &http.Server{Addr: ":8080"}

    statsMux := http.NewServeMux()
    statsServer := &http.Server{Handler: statsMux, Addr: ":57475"}

    if err := view.Register(ochttp.DefaultServerViews...); err != nil {
        log.WithError(err).Fatal("register HTTP metrics view")
    }

    exporter, err := prometheus.NewExporter(prometheus.Options{
        Namespace: "default",
    })
    if err != nil {
        log.WithError(err).Fatal("create Prometheus exporter")
    }

    view.RegisterExporter(exporter)

    statsMux.Handle("/metrics", exporter)

    originalHandler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        w.Write([]byte("Hello, World!")) …
Run Code Online (Sandbox Code Playgroud)

go docker grafana docker-networking prometheus

5
推荐指数
1
解决办法
5164
查看次数

与 docker 容器共享虚拟网络

我正在做一个项目,需要我在我的主机上创建一个虚拟 CAN 网络

$ sudo modprobe vcan
$ sudo ip link add dev vcan0 type vcan
$ sudo ip link set up vcan0
Run Code Online (Sandbox Code Playgroud)

我的 ifconfig :

在此处输入图片说明

我的问题是如何与我的 docker 容器共享这个接口。

如果它有任何用处,我find / -name "vcan0" -print 2>/dev/null在我的主机上运行以下命令:

/sys/class/net/vcan0
/sys/devices/virtual/net/vcan0
/proc/sys/net/ipv4/conf/vcan0
/proc/sys/net/ipv4/neigh/vcan0
Run Code Online (Sandbox Code Playgroud)

我可以使用docker run --rm -it --network=host ... . 唯一的问题是没有网络隔离 b/w docker 主机和容器了。有没有办法在不共享主机网络的情况下实现上述目标?

linux can-bus docker docker-networking python-can

5
推荐指数
1
解决办法
1164
查看次数

docker-compose v3 将文件夹名称添加到网络名称之前

当我运行时docker-compose up -d,docker 总是创建容器名称和网络名称,并以包含docker-compose.yml文件的文件夹名称为前缀。

我可以指定容器名称如下:

nginx:
    container_name: nginx
    build:
        context: .
        dockerfile: .docker/docker-nginx.dockerfile
Run Code Online (Sandbox Code Playgroud)

但是如何指定网络名称,以便它不会在其前面添加文件夹名称?

谢谢。

docker docker-compose docker-networking

4
推荐指数
2
解决办法
3541
查看次数

Docker 服务发现不适用于默认网桥

似乎 docker 服务发现仅适用于用户定义的网络,而不适用于默认网桥(docker0),但我在文档中没有找到任何内容。

docker run --rm -d --name c1 alpine sleep 2h
docker run --rm -d --name c2 alpine sleep 2h
docker exec -ti c1 ping c2

它给了我 ping: bad address 'c2'

但是如果我创建一个自定义桥接网络一切正常:
docker network create u-bridge
docker run --rm -d --name u1 --net u-bridge alpine sleep 2h
docker run --rm -d --name u2 --net u-bridge alpine sleep 2h
docker exec -ti u1 ping u2

它给了我: PING u2 (172.18.0.3): 56 data bytes (...)

默认桥接网络不应该有服务发现吗?

docker docker-networking

4
推荐指数
1
解决办法
1230
查看次数

无法创建 docker 网络:在要分配给网络的默认值中找不到可用的、非重叠的 IPv4 地址池

命令docker create network mynetwork给了我以下错误响应:

Error response from daemon: could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the network
Run Code Online (Sandbox Code Playgroud)

我用谷歌搜索了这个错误,但这些解决方案都不起作用

  1. 我只有 3 个预定义的 docker 网络,所以docker network prune没什么区别。
  2. 我从未安装过 OpenVPN

这是有关我的服务器环境的一些信息。操作系统:

LSB Version:    :core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID: CentOS
Description:    CentOS release 6.3 (Final)
Release:    6.3
Codename:   Final
Run Code Online (Sandbox Code Playgroud)

核心:

Linux xxx.com 3.10.0_3-0-0-17 #181 SMP Thu Feb 8 16:34:08 CST 2018 x86_64 x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

码头工人:

Client:
 Version:   18.03.0-ce
 API version:   1.37
 Go …
Run Code Online (Sandbox Code Playgroud)

docker docker-networking docker-network

4
推荐指数
1
解决办法
7196
查看次数

docker:EC2 实例中堆栈中的容器不继承 dns 名称服务器

我已经在 AWS 上设置了一个 EC2 实例。

已正确设置我的安全组,以便实例能够访问 Internet,例如

ubuntu@ip-10-17-0-78:/data$ ping www.google.com
PING www.google.com (216.58.211.164) 56(84) bytes of data.
64 bytes from dub08s01-in-f4.1e100.net (216.58.211.164): icmp_seq=1 ttl=46 time=1.02 ms
64 bytes from dub08s01-in-f4.1e100.net (216.58.211.164): icmp_seq=2 ttl=46 time=1.00 ms
Run Code Online (Sandbox Code Playgroud)

但是,当我执行容器时,这是不可能的:

root@d1ca5ce50d3b:/app# ping www.google.com
ping: www.google.com: Temporary failure in name resolution
Run Code Online (Sandbox Code Playgroud)

update_1:连接问题与docker stack deploy在特定堆栈中使用,启动的容器有关;

当我刚启动一个独立的容器时,就可以连接到 Internet:

ubuntu@ip-10-17-0-78:/data$ docker run -it alpine:latest /bin/ash
/ # ping www.google.gr
PING www.google.gr (209.85.203.94): 56 data bytes
64 bytes from 209.85.203.94: seq=0 ttl=38 time=1.148 ms
64 bytes …
Run Code Online (Sandbox Code Playgroud)

docker docker-networking

4
推荐指数
1
解决办法
985
查看次数