我用 LinuxLinux运维开发计算机网络学习日常

Docker的网络

2018-10-10  本文已影响11人  InnocenceYWQ

Docker bridge


docker bridge network是怎么映射到主机IP地址上网的呢?通过本机 ip a命令我们可以看到如下内容:
其中docker0 的networkspace是本机,veth26d281@if13有自己的networkspace,同时也是docker0网卡的一个接口。

image.png

通过docker exec test1 ip a 进入查看dokcer容器的ip network,其中eth0@if14和veth26d281@if13是一对,


image.png

通过brctl show 可以看到它们之间的关联关系,因为veth26d281是docker0的一个接口,又因为上面的eth0@if14和veth26d281@if13是一对,,所以可以通过这个接口转换成本机宿主的ip去访问Internt


image.png
image.png

容器之间的link


我们在使用Docker的时候,经常可能需要连接到其他的容器,比如:web服务需要连接数据库。按照往常的做法,需要先启动数据库的容器,映射出端口来,然后配置好客户端的容器,再去访问。其实针对这种场景,Docker提供了--link 参数来满足。
docker run -d --name test2 --link test1 busybox


容器的端口映射


在启动容器时,如果不配置宿主机器与虚拟机的端口映射,外部程序是无法访问虚拟机的,因为没有端口。
端口映射的指令是docker run -p ip:hostPort:containerPort redis
使用-p参数会分配宿主机的端口映射到虚拟机。
IP表示主机的IP地址。
hostPort表示宿主机的端口。
containerPort表示虚拟机的端口 。
容器的4种网络模式。

我们在使用docker run创建Docker容器时,可以用--net选项指定容器的网络模式,Docker有以下4种网络模式:

下面分别介绍一下Docker的各个网络模式:

Overlay和Underlay的通俗解释


Docker Overlay网络和etcd实现多机容器通信

image.png
image.png

命令

当前机器上docker有哪些网络
docker network ls
#查看指定的网络详情
docker network inspect [networkId]
docker run -d --name test2 --link test1 busybox
docker network create -d bridge my-bridge
docker run -d --name test3 --network my-bridge busybox
docker network connect my-bridge test2
docker run --name web -d nginx
docker network inspect bridge
docker run --name nginx  -d -p 80:80 nginx
docker run -p ip:hostPort:containerPort redis
##-e 设置环境变量
docker run -d --link redis --name flask-redis -e REDIS_HOST=redis [image]
#实时查看docker容器日志
$ sudo docker logs -f -t --tail #行数 容器名
docker network create -d overlay demo
#实时查看docker容器名为s12的最后10行日志
$ sudo docker logs -f -t --tail 10 s12
上一篇下一篇

猜你喜欢

热点阅读