彩世界开奖app官网-彩世界平台官方网址(彩票平台)
做最好的网站
来自 彩世界开奖app官网 2019-12-06 21:45 的文章
当前位置: 彩世界开奖app官网 > 彩世界开奖app官网 > 正文

docker 网络【彩世界开奖app官网】

假如我们有一个应用的image,有一个db的image。我们肯定希望应用的container和db的container之间隔离,但是应用又可以访问db。于是我们就面对一个问题container之间如何沟通呢?本次我们讨论在同一个host的container之间的情况(主要看bridge)。

单个网络

注意:本文档仅适用于版本2或更高版本的compose文件格式。compose version1不支持网络功能。

默认情况下,Compose为您的应用程序设置单个网络。服务的每个容器都加入默认网络,并且可以由该网络上的其他容器访问,并且可由他们发现与容器名称相同的主机名。

注意:您的应用程序的网络名称基于“项目名称”,就是基于它所在的目录的名称。您可以使用--project-name标签或COMPOSE_PROJECT_NAME 环境变量覆盖项目名称。

例如,假设您的应用程序位于名为myapp的目录中,并且您的docker-compose.yml如下所示:

version: "3"

services:

*       web:*

*            build: .*

*            ports:*

*            - "8000:8000"*

*      db:*

*            image: postgres*

*            ports:*

*            - "8001:5432"*

当您运行docker-compose时,会发生以下情况:

1.创建一个名为myapp_default的网络。

2.使用“web”服务的配置创建一个容器。它加入一个叫myapp_default网络,在里面的名称是web。

3.使用”db“服务的配置创建一个容器。它加入一个叫myapp_default网络,在里面的名称是db。

每个容器现在可以查找主机名"web"或"db"并获取相应容器的IP地址。例如,Web的应用程序可以连接到URL postgres:// db:5432并开始使用Postgres数据库。

请注意主机端口容器端口之间的区别。在上述示例中,对于db,主机端口为8001,容器端口为5432(默认为postgres端口)。服务到服务的网络通信使用容器端口。当定义主机端口时,服务也可以在群外访问。

在Web容器中,您的db的连接字符串看起来像postgres:// db:5432,从主机,连接字符串看起来像postgres:// {DOCKER_IP}:8001。

自定义网络

我们可通过 bridge 驱动创建类似前面默认的 bridge 网络

docker network create --driver bridge my_net     #创建
docker network inspect my_net 查看my_net 的配置信息

创建网段时指定 --subnet 和 --gateway 参数可自定义网段

 docker network create --driver bridge --subnet 172.22.15.0/24 --gateway 172.22.15.1 my_net

彩世界开奖app官网 1

image.png

彩世界开奖app官网 2

image.png

容器要使用新的网络,需要在启动时通过 --network 指定,--ip可配置静态ip

  1. 自定义network

    docker network create --deiver bridge --subnet 172.22.0.0/24 --gateway 172.22.0.1 mynet
    

    查看:

    docker network inspect mynet
    

     

  2. 使用自定义network

    docker run -t --name b2 --network mynet --ip 172.22.0.2 busybox
    docker run -t --name b3 --network mynet --ip 172.22.0.3 busybox
    

     

  3. 测试

    docker exec -i b3 bin/sh
    
    ping -c 3 b2
    

     

     

多主机网络

将Compose应用程序部署到Swarm群集时,可以使用内置的overlay驱动来启用多主机之间的容器通信,而不会对Compose文件或应用程序代码进行任何更改。

默认情况下,群集将使用Overlay驱动,但如果您愿意,可以明确指定它。您可以使用顶级网络键(key)指定自己的网络,而不是使用默认的应用网络。这样可以创建更复杂的拓扑结构,并指定自定义网络驱动程序和选项。您还可以使用它将服务连接到由Compose管理的外部创建的网络。

每个服务都可以指定使用服务级网络key连接的网络,这是一个名称引用顶级networks键下的条目的列表。

这是一个定义两个自定义网络的“compose”文件示例。代理服务与数据库服务隔离,因为它们不共享一个共同的网络

  • 只有app可以与两者通信。

version: "3"

services:

   proxy:

   build: ./proxy

   networks:

     - frontend

  app:

      build: ./app

    networks:

   - frontend

   - backend

  db:

    image: postgres

    networks:

    - backend

 networks:

   frontend:

     driver: custom-driver-1

   backend:

     driver: custom-driver-2

     driver_opts:

       foo: "1"

       bar: "2"

Docker DNS Server

docker daemon 实现了一个内嵌的 DNS server,使容器可以直接通过“容器名”通信,启动时用 --name 为容器命名。
下面启动两个容器 bbox1 和 bbox2:

docker run -it --network=my_net --name=bbox1 busybox
docker run -it --network=my_net --name=bbox2 busybox

然后,bbox2 就可以直接 ping 到 bbox1 了:

彩世界开奖app官网 3

image.png

彩世界开奖app官网 4

image.png

注:只有使用 --subnet 创建的网络才能指定静态 IP。
docker run -it --network=my_net  --ip 172.22.15.22  busybox

彩世界开奖app官网 5

image.png

彩世界开奖app官网 6

注:只能在自定义网络中使用

host网络

连接到 host 网络的容器共享 Docker host 的网络栈,容器的网络配置与 host 完全一样。可以通过 --network=host 指定使用 host 网络。

外网

docker容器默认可以访问外网,只要通过nat,外网可以利用端口映射访问内部容器

none 网络

什么都没有的网络,没有任何网卡。作用用于隔离一些安全要求高,但是不需要联网的应用

joined 容器

joined 容器是另一种实现容器间通信的方式。
joined 容器非常特别,它可以使两个或多个容器共享一个网络栈,共享网卡和配置信息,joined 容器之间可以通过 127.0.0.1 直接通信。
先创建一个 httpd 容器,名字为 web1。

docker run -d -it --name=web1 httpd

然后创建 busybox 容器并通过 --network=container:web1 指定 jointed 容器为 web1:

docker run -it --network=container:web1 busybox

彩世界开奖app官网 7

image.png

两容器共享网络栈
joined适用于
1.不同容器中的程序希望通过 loopback 高效快速地通信,比如 web server 与 app server。
2.希望监控其他容器的网络流量,比如运行在独立容器中的网络监控程序。

Docker 安装时会自动在 host 上创建三个网络,我们可用 docker network ls 命令查看:

容器间的连通性

同一网络中的容器,网关之间都是可以通的

彩世界开奖app官网 8

image.png

不同网桥间通信可以为 容器添加一块 net_my的网卡。这个可以通过docker network connect 命令实现。

彩世界开奖app官网 9

image.png

image.png

brideg网络

Docker 安装时会创建一个 命名为 docker0 的 linux bridge。如果不指定--network,创建的容器默认都会挂到 docker0 上。
通过 docker network inspect bridge 查看 bridge 网络的配置信息:

彩世界开奖app官网 10

image.png

bridge 网络配置的 subnet 就是 172.18.0.0/16,并且网关是 172.18.0.1。这个网关就是 docker0

彩世界开奖app官网 11

image.png

彩世界开奖app官网 12

image.png

本文由彩世界开奖app官网发布于彩世界开奖app官网,转载请注明出处: docker 网络【彩世界开奖app官网】

关键词: Docker 容器