zoukankan      html  css  js  c++  java
  • docker 第四篇 网络

    安装docker以后自动添加三种网络方式

      bridge: 表示桥接网络 (在本地自动创建一个软交换机)

      host: 表示让容器使用宿主机的网络名称空间

      none: 表示没有网络 不能执行网络通信。

        

    创建容器的同时会创建一对网卡 一半在物理机上(自动关联bridge)一半在容器里面

    可以通过以下命名查看关联关系

      yum -y install bridge-utils

      brctl show

      ip link show

    容器的网络名称空间 UTS IPC是可以被共享的

    添加网络名称空间

      前奏

        rpm -q iproute

        ip netns help

      添加:

        ip netns add r1

      在网路名称空间中执行命令:

        ip netns exec r1 ifconfig -a  (此时网络名称空间是没有被激活的,需要添加虚拟网卡对)

      手动添加虚拟网卡对:

        ip link add name veth1.1 type veth peer name veth1.2

          name 指定第一半的名字

          type 类型

          peer 指定另一半的相关信息

      把虚拟网卡移动的名称空间里面:

        ip link set dev weth1.2 netns r1

      给名称空间里面的虚拟网卡改名:

        ip netns exec r1 ip link set dev veth1.2 name eth0

      激活宿主机上的虚拟网卡:

        ifconfig veth1.1 10.1.0.1/24 up

      激活名称空间里面的网卡:

        ip netns exec r1 ifconfig eth0 10.1.0.2/24 up

      查看名称空间里面的虚拟挖网卡ip:

        ip netns exec r1 ifconfig

    使用封闭式容器 (none)

      docker run --name t3 -it --network none --rm busybox:latest

    指定bridge网络(默认就是bridge)可以和当前主机的其它容器通信

      docker run --name t3 -it --network bridge --rm busybox:latest

      创建容器的时候指定主机名:

        docker run --name t3 -it --network bridge -h t3.com --rm busybox:latest

      暴露端口给其他主机访问:

        docker run --name t3 -it -p 80 --rm wang/httpd:v0.2

          -p 随机生成物理端口

          -P 不用指定端口 会自己暴露

          

      查看容器端口映射到具体哪个物理地址

        docker port 容器名称

      指定容器端口绑定物理机的某个ip 且ip是随机的

        docker run --name t3 -it -p 172.30.0.14::80 --rm wang/httpd:v0.2

      指定绑定容器的80端口到物理机的80:

        docker run --name t3 -it -p 80:80 --rm wang/httpd:v0.2

      即指定端口又指定ip:

        docker run --name t3 -it -pip:80:80 --rm wang/httpd:v0.2

        

      

     联盟还是容器(让两个容器共享一个名称空间) Joined container

      两个名称空间各自使用自己的User Mount  Pid,  共享UTS Net 和IPC

    共享其他容器的网络名称空间:

      docker run --name b6 --network container:b5 -it --rm busybox

    共享主机的地址给容器:

      docker run --name b5 --network host -it --rm busybox

    配置修改docker默认的ip地址段

      直接在/etc/docker/daemon.json 文件添加

      "bip":"ip/掩码",   其余的会根据ip自动生成

    在docker远程连接其他docker (默认不可以,因为docker默认监听的是本地的unit协议)

      需要修改监听一个正常的tcp监听端口即可,也是在/etc/docker/daemon.json 文件添加

        "hosts":["tcp://0.0.0.0:2375", "unix":///var/run/docker.sock]

      远程连接: docker -H ip:375 command

    根据需求添加网络:

      docker network create -d bridge --subnet "172.26.0.0/16" --gateway "172.26.0.1" mybr0

    创建容器时 把网络加到自己创建到ip段里面:

      docker run --name t5 -it --rm --net mybr0 busybox

    We are down, but not beaten. tested but not defeated.
  • 相关阅读:
    HTTPS协议详解
    HTTP协议详解
    网络传输协议 UDP & TCP 详解
    Socket(套接字)基础概念
    网络基础
    OSI 七层协议
    经典SQL题 1/25/50/100美分,多少种可能拼凑成2美元
    5.1一阶谓词逻辑
    4.4符号视角下的科学
    4.3领域语言与自然语言的比较
  • 原文地址:https://www.cnblogs.com/guniang/p/11609421.html
Copyright © 2011-2022 走看看