• Docker网络管理


    一、Docker的四种网络模式(host、container、none、bridge)

    1、 host模式,使用docker run时使用--net=host指定,docker使用的网络实际上和宿主机一样,在容器内看到的网卡ip是宿主机上的ip

       # docker run -it --rm --net=host httpd bash

    2、container模式,使用--net=container:container_id/container_name多个容器使用共同的网络,看到的ip是一样的

    3、none模式,使用--net=none指定:这种模式下不会配置任何网络

    4、bridge模式,使用--net=bridge指定,默认模式,不用指定,默认就是这种模式,这种模式会为每个容器分配一个独立的Network Namespace。类似于vmware的nat网络模式,同一个宿主机上的所有容器会在同一个网段下,相互之间可以通信

    二、外部访问容器(端口映射)

    1、创建一个容器

    # docker run -itd  httpd bash

    2、进入到该容器并且安装httpd服务,然后启动服务

    # docker exec -it 3e7 bash

    # yum -y install httpd

    # /usr/sbin/httpd

    3、把该容器生成一个新的镜像

    # docker commit -m "httpd-server" -a "fansik" 3e7 httpd

    4、使用新镜像创建容器,并制定端口映射

    # docker run -itd -p 5123:80 httpd bash

    5、进入容器,启动httpd服务

    # docker exec -it 0d6 bash

    # /usr/sbin/httpd

    6、编辑个页面

    # vi /var/www/html/index.html

    随便写点东西就可以

    7、退出容器测试

    # curl localhost:5123

    -p后面也支持ip:port:ip:port的格式,比如:

    -p 127.0.0.1:8080:80

    也可以不写本地端口,只写ip,这样会随意分配一个端口:

    -p 127.0.0.1::80

    三、容器互联

    下载一个mysql的镜像

    # docker pull mysql

    新建一个容器名字叫mysql

    # docker run -itd -p 3306:3306 --name mysql mysql bash

    再新建一个容器,并和mysql互联

    # docker run -itd -p 1725:80 --name web --link mysql:mysql httpd bash

    在web上于女性env命令可以查看到关于mysql的环境变量

    四、配置桥接网络

    centos7的配置方法:

    1、为了使本地网络中的机器和Docker容器更方便的通信,我们经常会有将Docker容器配置到和主机同一网段的需求,这个需求其实很容易实现,我们只要将Docker容器和宿主机的网卡桥接起来,再给Docker容器配上IP就可以啦。

    2、安装pipework

        git clone https://github.com/jpetazzo/pipework

        cp ~/pipework/pipework /usr/local/bin

    3、开启一个容器:

        docker run -itd --net=none --name fansik centos /bin/bash

    4、# pipework br0 fansik 10.10.10.202/24@10.10.10.201

        10.10.10.202为容器ip,@后面的ip为宿主机的ip

    5、# brctl addif br0 eth0

        eth0为宿主机的网卡,这一步为把br0和eth0桥接起来

    6、# docker exec -it fansik /bin/bash

       进去后ifconfig查看就可以看到新添加的ip

    centos6的配置方法:

    1、配置网卡信息

       # cd /etc/sysconfig/network-scripts/

       # cp ifcfg-eth0 ifcfg-br0

       # vim ifcfg-eth0

       DEVICE=eth0

       TYPE=Ethernet

       ONBOOT=yes

       BOOTPROTO=none

       BRIDGE=br0

       # vim ifcfg-br0

       DEVICE=br0

       TYPE=Bridge

       ONBOOT=yes

       BOOTPROTO=static

       IPADDR=10.10.10.201

       NETMASK=255.255.255.0

       GATEWAY=10.10.10.1

       DNS1=192.168.1.1

       重启网卡:/etc/init.d/network restart

    2、安装pipework

       git clone https://github.com/jpetazzo/pipework

       cp ~/pipework/pipework /usr/local/bin

    3、开启一个容器:

         # docker run -itd --net=none --name fansik httpd bash

    4、升级iproute否则创建桥接网络是会报错:Object "netns" is unknown,try "ip help"

        # rpm -Uvh https://repos.fedorapeople.org/openstack/EOL/openstack-grizzly/epel-6/iproute-2.6.32-130.el6ost.netns.2.x86_64.rpm

    5、# pipework br0 fansik 192.168.1.250/24  //为容器添加ip

    6、 # docker exec -it fansik bash //进到容器用ifconfig命令就可以看到新添加的ip了

  • 相关阅读:
    范畴定义
    泛函编程(0)-什么是泛函编程
    函数式语言的特性
    理解函数式编程
    未阅归档
    monad-本质解释- a monad is a design pattern--monad与泛型相关
    打印管理系统
    函数式JS: 原来promise是这样的monad
    Promise是Monad吗?
    Scala和范畴论 -- 对Monad的一点认识
  • 原文地址:https://www.cnblogs.com/fansik/p/5534848.html
Copyright © 2020-2023  润新知