美文网首页
容器网络

容器网络

作者: why_not_ | 来源:发表于2018-12-30 14:36 被阅读0次

容器网络

如何创建自定义网络、容器之间如何通信、容器如何与外界交互
docker network ls 查看docker安装时在host上创建的网络

|NETWORK ID | NAME | DRIVER |SCOPE|
|--------------|
|d1f615ee4cab | bridge | bridge | local|
|524400edcb11 | host | host | local|
|2feb82deae99 | none | null | local|

  • none网络
    挂在这个网络上的容器除了lo,没有其他网卡 创建容器时 —network=none指定
  • host网络
    共享docker host的网络栈,容器的网络配置与host完全一样 —network=host指定
    在容器中可以看到host的所有网卡,连hostname都是host的
    直接使用docker host 网络的最大好处就是性能
  • bridge网络
    容器默认使用的网络
    # brctl show #查看桥接网卡

Linux container 中用到一个叫做veth的东西,这是一种新的设备,专门为 container 所建。veth 从名字上来看是 Virtual ETHernet 的缩写,它的作用很简单,就是要把从一个 network namespace 发出的数据包转发到另一个 namespace。veth 设备是成对的,一个是 container 之中,另一个在 container 之外,即在真实机器上能看到的。

# docker network ls 查看全部网络
# docker network inspect bridge 查看指定子网信息

创建 user-defined 网络 用户定义网络

Docker 提供三种 user-defined 网络驱动:bridge, overlaymacvlan
# docker network create --driver bridge my_net #创建桥接网络
# docker netwok create —driver bridge —subnet 192.168.1.0/24 —gateway 192.168.1.1 my_net0 #创建桥接网络并指定网段、网关
# brctl show

# docker network inspect my_net
# docker run -d --network=my_net0 --name=test1 ubuntu bash -c "while true;do sleep 1;done" #创建容器时指定特定网络

IP通信

两个容器要能互通 必须要有属于同一网络的网卡 这样就可以通过IP进行交互 只要在创建容器时指定 --network 或者通过
docker network connect 将现有容器加入到指定网络
# docker network connect my_net0 con_A 网络名 容器名

docker DNS server

通过IP进行容器间 访问已经满足需求,但是还是不够灵活 在应用部署之前不确定其IP地址
docker daemon实现了一个内嵌的DNS server 使容器可以通过容器名进行通信
只要在容器启动时为容器指定容器名 --name
# docker run -it --network=my_net0 --name=compute centos
# docker run -it --network=my_net0 --name=controller centos

docker DNS 有个限制默认的bridge无法使用,只能用于user-defined网络

joined 容器

joined容器可以使多个容器共享一个网络栈,共享网卡和配置信息 joined 容器之间可以通过127.0.0.1直接通信

先创建一个容器
# docker run -it --name web --network=my_net0 centos bash
然后--network 指定网络为容器web
# docker run -it --name client --network=container:web ubuntu bash

1、不同容器使用lookback进行通信(高效)
2、运行在独立容器中的网络监控程序

外部网络

1、容器访问外部网络
通过iptables作nat转换ip
2、外部网络访问容器
端口映射
docker可以将对外提供服务的端口映射到host主机的某个端口容器启动时使用 -p 参数指定
# docker run -d -p 80 httpd
# docker run -d -p 8080:80 httpd 将host 8080端口 映射到 httpd容器的 80 端口

查看端口映射
# docker port CONTAINER
# docker ps

# ps -ef | grep docker-proxy
每映射一个端口,docker-proxy 就启动一个进程对访问的流量进行处理

相关文章

  • docker 收录

    查看容器ip 传送文件 容器 -> 宿主 宿主 -> 容器 进入容器 错误日志查看 网络访问 容器访问宿主网络,输...

  • docker容器之间通讯-network

    docker为容器创建独立的网络环境,实现宿主和容器、容器之间的网络隔离,默认使用bridge模式的网络,实现容器...

  • 配置网络

    概述 容器网络是容器选择连接到其他容器、主机和外部网络的机制。容器的 runtime 提供了各种网络模式,每种模式...

  • 容器安全-容器网络

    1、docker network 从4种容器中各取一个来解释容器网络: 1、docker run --networ...

  • 容器(11)----容器网络

    Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时...

  • 容器网络

    1. 容器网络模式 1.1 bright 模式 1.2 host 模式 1.3 none模式 1.4 contai...

  • 容器网络

    容器网络 如何创建自定义网络、容器之间如何通信、容器如何与外界交互docker network ls 查看dock...

  • 容器网络

    和容器打交道感觉就像魔法。理解的人就会得心应手,不理解的会觉得很难。幸运的是,我们已经对容器技术有一定的掌握,甚至...

  • 容器网络

    网络栈”,就包括:网卡(Network Interface)、回环设备(Loopback Device)、路由表和...

  • Docker 入门教程之容器网络

    什么是容器网络 容器网络是 Docker 用来解决相互隔离的容器之间通信问题的技术。 Docker 网络驱动的类型...

网友评论

      本文标题:容器网络

      本文链接:https://www.haomeiwen.com/subject/leevlqtx.html