04Docker网络基础配置

1 . Docker默认网络
Docker安装后,会自动创建3个网络,可以用

docker network ls 查看

Docker默认才用的网络是:"bridge" 桥接网络

Docker安装成功后,回出现docker0的网络设备,本质是一个虚拟网桥

brctl show

注意:brctl show 需要安装 yum install bridge-utils -y

2 . dcoker0的作用

给容器分配IP地址(与docker0同网段)

给容器分配Mac地址

是每个容器的默认网关

同一个宿主机的各个容器之间通信基础(都接入docker0网桥)

宿主机和容器直接通信的基础

3 . docker0的地址划分

docker0本身的IP:172.17.0.1

docker0的子网掩码:255.255.0.0

docker0分配的IP范围:172.17.0.2-172.17.255.254,共计65534个IP

4 . docker0如何组织网络

a.运行某个容器

docker search alpine

docker pull alpine

docker run -itd --name ap01 alpine

ip addr

brctl show

b.查看容器网络接口

docker exec -it ap01 ip addr

c.查看容器IP

docker exec -it ap01 hostname -i | docker inspect ap01

veth是虚拟机以太网,全称是VirtualEthernet

veth通过"veth pair"技术在veth设备一端写入网络包,其对端的veth设备可以读取到对应的网络包(可以想象是一根虚拟网线將两个veth设备连接起来)

--容器启动

--docker创建一对虚拟接口

--一端放到本地主机,如veth7530,然后桥接到默认的docker0上

--另一端放到容器中,并修改名字为eth0

--docker0 分配一个IP给容器eth0,并配置默认路由到桥接王康veth7530

5.端口映射实现访问容器

容器启动的时候,如果不指定对应参数,在容器外部是无法通过网络访问容器内的网络应用和服务的。

可以用-P或者-p 参数来指定映射端口,挡使用-P标记时,Docker会随机映射一个49000-49900的端口至容器内部开放的网络端口:

​
docker run -d -P training/webapp python app.py

docker ps -l

docker logs -f nostalgic_morse # 查看应用信息

​

6.映射所有接口地址

hostPort:containerPort 將本地的5000映射到容器的5000端口

​
docker run -d -p 5000:5000 training/webapp python app.py

此时默认会绑定本地所有接口上的所有地址。多次使用-p可以绑定多个端口

​
docker run -d -p 5000:5000 -p 3000:80 training/webapp python app.py

7.映射到指定地址的指定端口

​
docker run -d -p 127.0.0.1:5000:5000 training/webapp python app.py

8.映射到指定地址的任意端口

​
docker run -d -p 127.0.0.1::5000 training/webapp python app.py

还可以使用udp标记udp端口

​
docker run -d -p 127.0.0.1::5000/udp training/webapp python app.py

9.查看映射端口配置

docker prot

10.容器互联

使用--link参数可以让容器之间安全的进行交互

创建一个数据库容器

docker run -d --name db training/postgres

删除之前的web容器

docker rm -rf web

创建新的web容器并將它连接到db容器

​
docker run -d -P --name web --link db:db training/webapp python app.py

--link 参数格式为 --link name:alias ,其中name是要链接的容器的名字,alias是这个链接的别名

docker ps

这样就可以在两个容器直接创建了一个安全隧道,而不用映射他们的端口到宿主机上。从而避免暴露数据库端口到外部网络。

可以使用evn命令来查看web容器的环境变量

docker run --rm --name web2 --link db:db training/webapp env

1 1. 网络连接

默认情况下docker容器之间都是通过IP互相连接的

基于安全考虑可以通过/etc/docker/daemon.json在末尾配置:"icc": false,可以禁止容器直接的互联(充气docker才可剩下)

12.自定义网络

为何要自定义网络,容器的隔离,提高安全性;DNS解析和服务发现;容器直接负载均衡。。。

a.如何创建自定义网络

docker network create [--dirver 驱动类型] [ --subnet=172.168.0.0/16] 自定义网络名

--driver 代表驱动类型,默认为bridge

--subnet 代表网段设置,默认docker0地址上递增(172.17.0.1-->172.18.0.1)

--通过docker network ls 查看自定义网络

--通过 docker network inspect 查看使用本网络的详情

b.如何使用自定义网络

容器启动时:docker run --network 自定义网络名

容器启动后:docker network connect 网络名 容器名

相关推荐
茶颜悦色vv8 分钟前
蓝队知识浅谈(上)
网络·web安全·网络安全
石牌桥网管13 分钟前
DNS Resolver解析服务器出口IP查询
运维·网络·tcp/ip·dns
LKAI.13 分钟前
华为路由策略配置
运维·网络·华为·智能路由器
raysync88832 分钟前
如何保障医院内部的隔离网安全跨网文件交换?
网络·安全
想学习java初学者38 分钟前
Docker compose部署elasticsearch(单机版)
运维·docker·容器
御控物联_姜1 小时前
IP、网关、子网掩码的验证逻辑及程序(.Net)
网络
网络安全-杰克1 小时前
助力网络安全发展,安全态势攻防赛事可视化
网络·安全·web安全
联动-X2 小时前
2、 家庭网络发展现状
网络·智能路由器
江梦寻2 小时前
思科模拟器路由器配置实验
开发语言·网络·网络协议·学习·计算机网络
微刻时光2 小时前
Docker部署Nginx
运维·nginx·docker·容器·经验