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 网络名 容器名

相关推荐
ZachOn1y5 分钟前
计算机网络:计算机网络概述 —— 描述计算机网络的参数
网络·tcp/ip·计算机网络·考研必备
我命由我123456 分钟前
SSL 协议(HTTPS 协议的关键)
网络·经验分享·笔记·学习·https·ssl·学习方法
两点王爷1 小时前
使用WebClient 快速发起请求(不使用WebClientUtils工具类)
java·网络
wusam1 小时前
螺蛳壳里做道场:老破机搭建的私人数据中心---Centos下Docker学习03(网络及IP规划)
运维·服务器·网络·docker·容器
一直在进步的派大星1 小时前
Docker 从安装到实战
java·运维·docker·微服务·容器
什么鬼昵称3 小时前
Pikachu-xxe-xxe漏洞
网络·安全·xxe
真正的醒悟6 小时前
资源网站分享
网络
神一样的老师6 小时前
面向MQTT基础物联网网络的Age-of-Information感知的保留消息策略
网络·物联网
中草药z6 小时前
【JavaEE】http/https 超级详解
网络·笔记·网络协议·学习·http·https·计网