Acoplable conocimientos relacionados con la red

Döcker cuatro tipos de modos de comunicación:

  • recipiente cerrado : sólo hay Lo, sin ningún dispositivo de red , recipiente cerrado, el modo de isla.

    [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 puente : un extremo del recipiente, en la sección de puente docker0, la brctl KVM se puede lograr.

     [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
    
  • contenedores Alliance : uso compartido de red, IPC, UST , la adición de un recipiente a otro red de intercambio de recipiente contenedor, el proceso se pueden utilizar entre el recipiente AB Mín comunicación local, similar a los mismos anfitrión dos procesos de cambio.

    [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来获得网页值。
    
  • Los recipientes abiertos : recipiente Unión se extiende en otro recipiente compartida por el ciberespacio ordenador principal, el recipiente y los procesos de proceso de host puede comunicarse entre sí a través Mín .

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

Exponer puerto de cuatro maneras:

  • -p <container-Port> : puerto asignado a una de las direcciones de puerto dinámico contenedor de todos los hosts, 30.000 o más, no se especifica puramente aleatoria, no muy conocido, para los visitantes de la molestia, pero el beneficio se inicia simultáneamente N un servidor nginx y similares, no puede preocuparse por el puerto 80 conflictos ya que el puerto se asigna a la multitud de todas las incoherencias, ver iptables encontraron reglas de asignación generados automáticamente, como el contenedor se detiene, reglas de asignación eliminan automáticamente.

    [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 Puerto>: <puerto-Container> : direcciones de host especificado fijos y relación de mapeado de puertos para todos los contenedores, por ejemplo, se utilizan 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 fijo designado ip, mapeo dinámico entre los puertos y recipiente puertos designados.

    [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 Puerto>: <puerto-Container> : ip anfitrión fijo designado, puerto designado, y la cartografía designada entre los puertos de contenedores.

    [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
    

Cómo modificar el segmento de red IP por defecto del puente docker0 ventana acoplable

[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,
}

Cómo crear un tipo diferente de docker0 otros puentes, puente de comunicación

[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 artículos originales · alabanza ganado 18 · vistas 3993

Supongo que te gusta

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