[Docker] Introducción a los modos comunes y comandos comunes de la red Docker

Prefacio

Durante el tiempo de front-end, mientras usaba Docker, entré en contacto con el conocimiento relevante que requiere la red Docker. Mi comprensión anterior era que puede satisfacer el uso diario. Esta vez, aproveché la oportunidad para aprender más al respecto. , para
el conocimiento de la red Una comprensión más profunda puede no ser tan buena como la de un grandullón que domina Internet.


Tipos de redes Docker y estructuras correspondientes

Se informa que Docker 1.7 y Docker 1.8 tienen 4 tipos de red predeterminados, que son: // None( predeterminado)/ .HostBridgeContainer

  • viendo docker network ls_

Insertar descripción de la imagen aquí

Docker creará los siguientes tipos de redes de forma predeterminada. Host/ /NoneBridge

  • Ninguno

--net=noneNo se crea ninguna red relacionada, es decir, solo se puede ejecutar dentro del contenedor, el contenedor no realiza virtualización de red y el contenedor no puede comunicarse con el exterior.

  • anfitrión

--net=hostModo host. El contenedor y el host usan la misma red. Por ejemplo, si un proceso en el contenedor usa 8080un puerto, el host no puede usar este puerto. Viceversa, se aplica el mismo principio.

  • puente (predeterminado)

--net=bridgeCada contenedor realiza la virtualización de la red y se comunica con el host a través del mapeo de puertos.

  • envase

--net=container:Name_or_IdCuando se inicia un contenedor, no necesita virtualizar su propia red, sino que utiliza la red de otros contenedores.

Modo Puente

Insertar descripción de la imagen aquí

Por ejemplo, generalmente Docker usará el segmento de red 172.17.0.0/16 y asignará 172.17.0.1/16 al puente docker0 (puede ver docker0 usando el comando ifconfig en el host, que puede considerarse como la interfaz de administración del puente), utilizado como tarjeta de red virtual en la máquina host). La topología de red en un entorno independiente es la siguiente y la dirección del host es 10.10.0.186/24.


Comandos de red Docker de uso común

  • Crear red
docker network create --driver=bridge --subnet=192.168.88.0/24 demo 
# driver 网络模式
# subnet 网段 默认网段为172.17.0.0/16
# demo 名称
  • Cuando se inicia el contenedor, use la red.
#运行redis容器
docker run -itd --name redis  --network mynet --network-alias redis -p 6379:6379 redis
#运行nginx容器
docker run -d --name nginx -p 80:80 --network mynet --network-alias nginx --privileged=true   -v /home/wwwroot:/home/wwwroot -v /home/wwwlogs:/home/wwwlogs  nginx

  • Consultar la red del contenedor.docker inspect <containerName_or_Id>
# 运行容器;
$ docker run --name=nginx_bridge --net=bridge -p 80:80 -d nginx       
9582dbec7981085ab1f159edcc4bf35e2ee8d5a03984d214bce32a30eab4921a
 
# 查看容器;
$ docker ps
CONTAINER ID        IMAGE          COMMAND                  CREATED             STATUS              PORTS                NAMES
9582dbec7981        nginx          "nginx -g 'daemon ..."   3 seconds ago       Up 2 seconds        0.0.0.0:80->80/tcp   nginx_bridge
 
# 查看容器网络;
$ docker inspect 9582dbec7981
"Networks": {
    "bridge": {
        "IPAMConfig": null,
        "Links": null,
        "Aliases": null,
        "NetworkID": "9e017f5d4724039f24acc8aec634c8d2af3a9024f67585fce0a0d2b3cb470059",
        "EndpointID": "81b94c1b57de26f9c6690942cd78689041d6c27a564e079d7b1f603ecc104b3b",
        "Gateway": "172.17.0.1",
        "IPAddress": "172.17.0.2",
        "IPPrefixLen": 16,
        "IPv6Gateway": "",
        "GlobalIPv6Address": "",
        "GlobalIPv6PrefixLen": 0,
        "MacAddress": "02:42:ac:11:00:02"
    }
}
  • Consulta toda la red de la red.
$ docker network inspect bridge
[
    {
        "Name": "bridge",
        "Id": "9e017f5d4724039f24acc8aec634c8d2af3a9024f67585fce0a0d2b3cb470059",
        "Created": "2017-08-09T23:20:28.061678042-04:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.17.0.0/16"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "Containers": {
            "9582dbec7981085ab1f159edcc4bf35e2ee8d5a03984d214bce32a30eab4921a": {
                "Name": "nginx_bridge",
                "EndpointID": "81b94c1b57de26f9c6690942cd78689041d6c27a564e079d7b1f603ecc104b3b",
                "MacAddress": "02:42:ac:11:00:02",
                "IPv4Address": "172.17.0.2/16",
                "IPv6Address": ""
            }
        },
        "Options": {
            "com.docker.network.bridge.default_bridge": "true",
            "com.docker.network.bridge.enable_icc": "true",
            "com.docker.network.bridge.enable_ip_masquerade": "true",
            "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
            "com.docker.network.bridge.name": "docker0",
            "com.docker.network.driver.mtu": "1500"
        },
        "Labels": {}
    }
]
  • vincular contenedores relacionados
#1. 运行nginx和docker容器
docker run -itd --name redis -p 6379:6379 redis
docker run -d --name nginx -p 80:80 --privileged=true -v /home/wwwroot:/home/wwwroot -v /home/wwwlogs:/home/wwwlogs nginx

# 2. 链接网络
#加入nginx到mynet网络
[root@localhost /]# docker network connect mynet nginx
#加入redis到mynet网络
[root@localhost /]# docker network connect mynet redis
#查看mynet网络包含的容器,会发现两个容器都加入当前网络了,后面使用ping命令是能够ping通容器名称的。
[root@localhost /]# docker network inspect mynet


# 3. 取消链接网络
#将nginx移除mynet局域网络
docker network disconnect mynet nginx
Referencia

[1] Docker: explicación detallada del modo de red

[2] Explicación detallada y tutorial de la red Docker

[3] Organización de la red Docker


Referencia de mando oficial

Comando padre

Dominio Descripción
estibador El comando base para Docker CLI.

Comandos infantiles

Dominio Descripción
conexión de red acoplable Conectar un contenedor a una red
crear red acoplable crear una red
desconexión de la red acoplable Desconectar un contenedor de una red
inspeccionar la red acoplable Mostrar información detallada sobre una o más redes
red acoplable ls Listar redes
poda de red acoplable Eliminar todas las redes no utilizadas
sala de red acoplable Eliminar una o más redes
Referencia

[1]. (oficial) red acoplable

Supongo que te gusta

Origin blog.csdn.net/u010416101/article/details/122531225
Recomendado
Clasificación