¿Cómo deben comunicarse los contenedores con el mundo exterior?

Docker proporciona tres modos de red, a saber, nulo, host y puente.

null es el modo más simple, es decir, no hay red, pero otros complementos de red pueden personalizar la conexión de red, por lo que no lo presentaré aquí.

host significa usar directamente la red del host, lo que equivale a eliminar el aislamiento de red del contenedor (quedan otros aislamientos), y todos los contenedores compartirán la dirección IP y la tarjeta de red del host. Este modo no tiene una capa intermedia y, naturalmente, tiene una alta eficiencia de comunicación, pero carece de aislamiento, y la ejecución de demasiados contenedores puede generar fácilmente conflictos de puertos.

El modo host necesita usar el parámetro --net=host cuando se ejecuta Docker. A continuación, usaré este parámetro para iniciar Nginx:

docker run -d --rm --net=host nginx:alpine

El tercer tipo de puente, es decir, el modo puente, es algo similar a los conmutadores y enrutadores del mundo real, pero está virtualizado por software, y el contenedor y el host están conectados al puente a través de una tarjeta de red virtual (docker0 en la figura) Entonces pueden enviar y recibir paquetes de red normalmente. Sin embargo, en comparación con el modo host, el modo puente tiene más puentes virtuales y tarjetas de red, y la eficiencia de la comunicación será menor.

Al igual que el modo host, también podemos usar --net=bridge para habilitar el modo puente, pero no es necesario, porque el modo de red predeterminado de Docker es puente, por lo que generalmente no es necesario especificarlo explícitamente.

La asignación de número de puerto debe usar el modo puente y usar el parámetro -p cuando la ejecución de la ventana acoplable inicia el contenedor. El formulario es muy similar al parámetro -v del directorio compartido y usa: para separar el puerto local y el puerto del contenedor . Por ejemplo, si desea iniciar dos contenedores Nginx ejecutándose en los puertos 80 y 8080 respectivamente:

docker run -d -p 80:80 --rm nginx:alpine
docker run -d -p 8080:80 --rm nginx:alpine

Este artículo son las notas de estudio del día 7 de julio, el contenido proviene del "Curso práctico introductorio de Kubernetes" de Geek Time , se recomienda este curso.

Supongo que te gusta

Origin blog.csdn.net/key_3_feng/article/details/131605718
Recomendado
Clasificación