conhecimentos relacionados com a rede de Docker

Docker quatro tipos de modos de comunicação:

  • recipiente fechado : há apenas Lo, sem qualquer dispositivo de rede , recipiente fechado, de modo ilha.

    [root@ci_jenkins ~]# docker run -it --network none --rm busybox
    # ip a
    	1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
       		 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
       		 inet 127.0.0.1/8 scope host lo
             valid_lft forever preferred_lft forever
    # ifconfig
    	lo        Link encap:Local Loopback  
    	          inet addr:127.0.0.1  Mask:255.0.0.0
    	          UP LOOPBACK RUNNING  MTU:65536  Metric:1
    	          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    	          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
    	          collisions:0 txqueuelen:1000 
    	          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
    
    
  • Modo de ponte : uma extremidade do recipiente, em secção de ponte docker0, o brctl KVM pode ser alcançado.

     [root@ci_jenkins ~]# docker run --name n2 -it --network bridge --rm busybox
      # ip a
      ...
          eth0@if32: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue 
          link/ether 02:42:ac:11:00:05 brd ff:ff:ff:ff:ff:ff
          inet 172.17.0.5/16 brd 172.17.255.255 scope global eth0
      ...
      # ifconfig eth0 |grep "inet addr"
          inet addr:172.17.0.5  Bcast:172.17.255.255  Mask:255.255.0.0
    
    	//补充知识
    	//为容器注入hostname,不再让其为ID,注意hostname和容器名字是两码事儿
    	# docker run -it --rm --name shit-con --hostname shit.com --add-host damn.com:233.233.233.233 busybox
    	# cat /etc/hosts
    	172.17.0.5	shit.com shit     //自动解析
    	233.233.233.233 damn.com  //自己填的DNS解析  --dns 8.8.8.8 这个是添加DNS服务器,默认是docker0桥网关
    	# hostname
    	shit.com
    
  • recipientes Alliance : Rede da partilha, IPC, UST , adicionando um recipiente para outro rede de partilha de navio porta-container, o processo pode ser utilizado entre o recipiente AB lo de comunicação local, semelhante ao mesmo host dois processos de troca.

    [root@ci_jenkins ~]# docker run -itd --name n1 --rm  alpine
    [root@ci_jenkins ~]# docker run -itd --name n2 --network container:n1 --rm  alpine
    //这样n2就共享n1容器的network, IPC, UST了,但是Mount,PID,User还是独立的。
    //n1创建一个文件,同一个目录下n2是不存在的。
    //但是n1如果启动了web服务器,那么n2可以直接通过Lo来获得网页值。
    
  • recipientes abertos : Recipiente União estende em um outro recipiente compartilhada pelo ciberespaço computador host, o recipiente e os processos processo pode hospedar comunicar uns com os outros através lo .

    [root@ci_jenkins ~]# docker run -it --network host alpine  //相当于可以使用宿主机的网络NS
    

Expor porto de quatro maneiras:

  • -p <Container-Port> : porta mapeada para uma especificados endereços de portas dinâmico recipiente de todos os hosts, 30.000 ou mais, não é especificado puramente aleatório, não é bem conhecida, para os visitantes do problema, mas o benefício é iniciado simultaneamente N um servidor nginx e similares, não pode se preocupar com a porta 80 conflitos desde a porta é mapeado para o acolhimento de todas as inconsistências, consulte iptables encontrados regras de mapeamento gerado automaticamente, como o recipiente estiver parado, regras de mapeamento automaticamente excluídos.

    [root@ci_jenkins ~]# docker run -d -p 80 nginx:1.14-alpine
    [root@ci_jenkins ~]# docker run -d -p 80 nginx:1.14-alpine
    [root@ci_jenkins ~]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
    a4bedc6c7095        nginx:1.14-alpine   "nginx -g 'daemon of…"   22 seconds ago      Up 21 seconds       0.0.0.0:32770->80/tcp    affectionate_darwin
    2e817ca7c024        nginx:1.14-alpine   "nginx -g 'daemon of…"   23 seconds ago      Up 22 seconds       0.0.0.0:32769->80/tcp    jolly_merkle
    [root@ci_jenkins ~]# docker port a4be
    80/tcp -> 0.0.0.0:32770
    
  • -p <-Host Porto>: <Porta-Recipiente> : endereços hospedeiras especificado fixos e relao de mapeamento da porta de todos os recipientes, por exemplo, são utilizados nginx 80:80

    [root@ci_jenkins ~]# docker run -d -p 8000:80 nginx:1.14-alpine
    [root@ci_jenkins ~]# docker port xxxx
    80/tcp -> 0.0.0.0:80
    
  • -p <hostxip> :: <Container-Port> : host fixo designado ip, mapeamento dinâmico entre os portos e designado recipiente portos.

    [root@ci_jenkins ~]# docker run -d -p 192.168.240.221::80 nginx:1.14-alpine
    [root@ci_jenkins ~]# docker port xxxx
    80/tcp -> 192.168.240.221:32769
    
  • -p <hostX-IP>: <-Host Porto>: <Porta-Recipiente> : ip hospedeiro fixo designado, porta designada, e mapeamento designado entre os pratos de escotilhão.

    [root@ci_jenkins ~]# docker run -d -p 192.168.240.221:8000:80 nginx:1.14-alpine
    [root@ci_jenkins ~]# docker port xxxx
    80/tcp -> 192.168.240.221:8000
    

Como modificar o segmento de rede IP ponte padrão docker0 docker

[root@ci_jenkins ~]# vim /etc/docker/daemon.json
{
        "registry-mirrors": ["http://f1361db2.m.daocloud.io"],
        "bip":"12.192.0.0/16",         //修改docker0桥网段
        "dns":["<dns1>","<dns2>"],   //不让docker容器使用default dns,要求使用自定义的dns
		"default-gateway":"<gateway>",
        "host":["unix:///var/run/docker.sock","tcp://0.0.0.0:2375"]    //不仅仅是通过本地sock监听,可以使用tcp远程操作docker,
}

Como para criar um tipo diferente de docker0 outras pontes, comunicação ponte

[root@ci_jenkins ~]# docker network create -d bridge --subnet "10.1.0.0/16" --gateway "10.1.0.1" sdbr0
5f3cf3544245d93b9d3492e5d188bb6e6672fcb53cebbdf581a7b592f80306b2

[root@ci_jenkins ~]# ip a
...
49: br-5f3cf3544245: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group 			default 
link/ether 02:42:4e:89:9b:91 brd ff:ff:ff:ff:ff:ff
inet 10.1.0.1/16 brd 10.1.255.255 scope global br-5f3cf3544245
valid_lft forever preferred_lft forever

[root@ci_jenkins ~]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
54d2ba21ece8        bridge              bridge              local
a866160bd2c7        host                host                local
53fc291f024c        none                null                local
5f3cf3544245        sdbr0               bridge              local

[root@ci_jenkins ~]# docker run -d --net sdbr0 nginx:1.14-alpine
//后通过docker inspect xx 查看可以看到--net是指定网桥类型。
//两个网桥之间只要服务器打开net.ipv4.ip_forward = 1就可以通信。
Publicado 49 artigos originais · ganhou elogios 18 · vista 3993

Acho que você gosta

Origin blog.csdn.net/weixin_41047549/article/details/90792705
Recomendado
Clasificación