容器的5种网络模式和 K8S pod使用的容器网络模式
文档说明:只记录关键地方; 发文时间: 2022-10-23
理解了容器网络模式,也就知道了如何把多个容器相互连接起来
容器的网络模式:
- network_mode: "bridge"
- network_mode: "host"
- network_mode: "none"
- network_mode: "service:[service name]"
- network_mode: "container:[container name/id]"
· host模式,使用--net=host指定。
· container模式,使用--net=container:NAME_or_ID指定。
· none模式,使用--net=none指定。
· bridge模式,使用--net=bridge指定,默认设置。(也可以自定义桥接模式,比如openvswitch)
docker network https://docs.docker.com/network/
来个例子 (network_mode: "service:[service name]" 模式的例子)
共享容器网络
容器之间可以直接使用 127.0.0.1 或者 localhost 连接
version: "3"
services:
pause:
# image: gcr.io/google-containers/pause-amd64:3.1
image: alpine:latest
restart: always
container_name: pause
command: [ 'tail', '-f','/dev/null' ]
ports:
- "80:80"
- "443:443"
nginx:
image: nginx:alpine
network_mode: 'service:pause'
depends_on:
- pause
php-fpm:
image: php:7.4-fpm-alpine
depends_on:
- pause
network_mode: 'service:pause'
docker-compose 容器服务之间互访 配置(常用)
方式 1: extra_hosts 容器名称 (也就是自定义域名映射)
原理: 添加主机名的标签,就是往/etc/hosts文件中添加一些记录 ; 在K8S 环境中,使用 hostAliases 参数设置,
extra_hosts:
- "my-app-service:192.168.3.205"
方式 2: depends_on 容器启动顺序
depends_on:
- mysql
- nginx
方式 3: links 链接其他服务(可以链接外部服务)
links:
- mongodb
- nginx
K8S POD 的网络模式
POD 使用的网络模式其实是
5. network_mode: "container:[container name/id]"
同一个 pod 内的各容器共享一个网络,因此可以使用127.0.0.1 或者 localhost 容器之间互访
默认 POD 由
k8s.gcr.io/pause
守护容器提供网络,因此你看到pod里的所有容器都可以使用127.0.0.1或者localhost 连接