zoukankan      html  css  js  c++  java
  • docker网络访问

    一 docker网络访问

    描述:

      在启动容器的时候,如果不指定对应的参数,在容器外部是无法通过网络来访问容器内的网络应用和服务的。当容器中运行一些网络应用,要让外部访问这些应用时,可以通过-P或者-p参数来指定容器端口映射。当使用-P(大写)时,docker会随机映射一个端口到容器内部开放的端口

    #启动容器 -d 后台启动 -P 随机映射
    [root@Centos-node2 ~]# docker run -d -P nginx
    #绑定nginx容器80端口到本地的192.168.10.138:888端口
    [root@Centos-node2 ~]# docker run -d -p 192.168.10.138:888:80 --name mynginx1 nginx
    #指定udp协议不指定默认tcp
    [root@Centos-node2 ~]# docker run -d -p 192.168.10.138:888:80:udp --name mynginx1 nginx
    #查看映射端口
    [root@Centos-node2 ~]# docker port mynginx1
    80/tcp -> 192.168.10.138:888
    #指定多个端口
    [root@Centos-node2 ~]# docker run -d -p 192.168.10.138:888:80 -p 443:443 --name mynginx1 nginx

    二 容器互联

    描述:

        容器间互联是让多个容器中应用进行交互的一种方式。

    2.1.1 --link  运行另外一个容器,并link到上面启动的容器,这个容器被称为received container,--link连接名为db的容器,并为其设置了别名为:busybox2

    [root@Centos-node3 ~]# docker run -it --name busybox1 busybox
    [root@Centos-node3 ~]# docker run -it --link busybox1:busybox2 --name busybox2 busybox
    / # cat /etc/hosts 
    127.0.0.1    localhost
    ::1    localhost ip6-localhost ip6-loopback
    fe00::0    ip6-localnet
    ff00::0    ip6-mcastprefix
    ff02::1    ip6-allnodes
    ff02::2    ip6-allrouters
    172.17.0.2    busybox1 8fe0dce9f160
    172.17.0.3    c3a6fda35cb6
    / # ping busybox1
    PING busybox1 (172.17.0.2): 56 data bytes
    64 bytes from 172.17.0.2: seq=0 ttl=64 time=0.107 ms
    64 bytes from 172.17.0.2: seq=1 ttl=64 time=0.051 ms

    2.1.1 三种网络模式

    [root@Centos-node3 ~]# docker network ls
    NETWORK ID          NAME                DRIVER              SCOPE
    1fb49642b1e6        bridge              bridge              local
    fec447af9823        host                host                local
    8c6172952391        none                null                local

     bridge  :Docker 安装时会创建一个 命名为 docker0 的 linux bridge。如果不指定 --network,创建的容器默认都会挂到 docker0 上。接口 docker0 是一个虚拟的以太网桥,用于连接容器和本地宿主网络。

    host : 如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network 。可以通过--network=host指定使用 host 网络。 缺点容易发生端口冲突

    none: none 网络就是什么都没有的网络。挂在这个网络下的容器除了 lo,没有其他任何网卡。容器创建时,可以通过--network=none指定使用 none 网络。

    2.1.2 创建一个网络

     1 [root@Centos-node3 ~]# docker network create --driver bridge my_net
     2 aec79181307e4e7708a6a24a7b0f04d6edec067ed6c7853053be8051f9c627fe
     3 #自定义网段IP       
     4 [root@Centos-node3 ~]# docker network create --driver bridge --subnet 192.168.100.0/24 --gateway 192.168.100.1 my_net2
     5 5ad00d340d16d7804865cc1e3e45a3444181878da9c9422fbe1dc658938895e6
     6 
     7 #指定IP地址启动容器
     8 [root@Centos-node3 ~]# docker run -it --rm --network=my_net2 --ip 192.168.100.10 busybox
     9 WARNING: IPv4 forwarding is disabled. Networking will not work.
    10 / # ip a
    11 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
    12     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    13     inet 127.0.0.1/8 scope host lo
    14        valid_lft forever preferred_lft forever
    15     inet6 ::1/128 scope host 
    16        valid_lft forever preferred_lft forever
    17 34: eth0@if35: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue 
    18     link/ether 02:42:c0:a8:64:0a brd ff:ff:ff:ff:ff:ff
    19     inet 192.168.100.10/24 scope global eth0
    20        valid_lft forever preferred_lft forever
    21     inet6 fe80::42:c0ff:fea8:640a/64 scope link 
    22        valid_lft forever preferred_lft forever
    23 [root@Centos-node3 ~]# docker network connect my_net2 nginx
    24 
    25 #共同一个定义网络可以互相通信

    2.1.3 docker主机之间容器通信

    [root@Centos-node2 ~]# docker run -d -p 8500:8500 --name consul progrium/consul -server -bootstrap
    
    #node3 node5主机添加以下配置
    [root@Centos-node3 ~]# cat /etc/docker/daemon.json 
    {
    "registry-mirrors": ["https://registry.docker-cn.com"],
    "cluster-store":"consul://192.168.10.138:8500",    #consul地址
    "cluster-advertise":"192.168.10.139:2375"             #本机地址
    
    }

    验证:

    创建自定义全局网络

    [root@Centos-node3 ~]# docker network create -d overlay ov_net1
    1ce3d31db5dc8865bcfb0d8c06c3c9b6c7a62d8518ce7802263e9acad3ab8b80
    [root@Centos-node3 ~]# docker network ls
    NETWORK ID          NAME                DRIVER              SCOPE
    af13f853071f        bridge              bridge              local
    fec447af9823        host                host                local
    aec79181307e        my_net              bridge              local
    5ad00d340d16        my_net2             bridge              local
    8c6172952391        none                null                local
    1ce3d31db5dc        ov_net1             overlay             global
    
    #node3创建node4查看
    [root@Centos-node4 ~]# docker network ls
    NETWORK ID          NAME                DRIVER              SCOPE
    2035b2339f4d        bridge              bridge              local
    832b9c357202        host                host                local
    20dfc847adb8        none                null                local
    1ce3d31db5dc        ov_net1             overlay             global

     node3,node4分别启动容器指定全局网络测试互通

    [root@Centos-node3 ~]# docker run -it --rm --network=ov_net1 busybox
    / # ping 10.0.0.2
    PING 10.0.0.2 (10.0.0.2): 56 data bytes
    64 bytes from 10.0.0.2: seq=0 ttl=64 time=1.322 ms
    64 bytes from 10.0.0.2: seq=1 ttl=64 time=0.395 ms
    --- 10.0.0.2 ping statistics ---
    2 packets transmitted, 2 packets received, 0% packet loss
    round-trip min/avg/max = 0.395/0.858/1.322 ms
    
    [root@Centos-node3 ~]# docker network ls
    NETWORK ID          NAME                DRIVER              SCOPE
    af13f853071f        bridge              bridge              local
    5fd6e9efce57        docker_gwbridge     bridge              local  #随机 为了让容器与外界通信
    fec447af9823        host                host                local
    aec79181307e        my_net              bridge              local
    5ad00d340d16        my_net2             bridge              local
    8c6172952391        none                null                local
    1ce3d31db5dc        ov_net1             overlay             global
  • 相关阅读:
    artDialog基本使用
    SQL数据类型(SQL Server六个类型使用)
    常用SQL语句大全(SQL Server)
    从PRISM开始学WPF(八)导航Navigation-更新至Prism7.1
    从PRISM开始学WPF(番外)共享上下文 RegionContext-更新至Prism7.1
    从PRISM开始学WPF(七)MVVM(三)事件聚合器EventAggregator-更新至Prism7.1
    从PRISM开始学WPF(六)MVVM(二)Command-更新至Prism7.1
    从PRISM开始学WPF(四)Prism-Module-更新至Prism7.1
    从PRISM开始学WPF(二)认识Prism-更新至Prism7.1
    从PRISM开始学WPF(一)认识WPF-更新至Prism7.1
  • 原文地址:https://www.cnblogs.com/yanshicheng/p/9446244.html
Copyright © 2011-2022 走看看