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

相关推荐
Xの哲學5 小时前
Linux多级时间轮:高精度定时器的艺术与科学
linux·服务器·网络·算法·边缘计算
FlourishingMind5 小时前
蓝牙授时CTS (Current Time Service)、PTP、NTP
运维·服务器·网络
2301_800050996 小时前
docker
运维·docker·容器
Winner13006 小时前
查看rk3566摄像头设备、能力、支持格式
linux·网络·人工智能
查尔斯-BUG万象集7 小时前
解决 OceanBase CE 启动失败:OBD-2002: Failed to start 0.0.0.0 observer
docker·k8s·oceanbase
微爱帮监所写信寄信8 小时前
微爱帮监狱写信寄信工具信件加密技术方案
网络
好奇的菜鸟8 小时前
Docker 一键启动:打造高效的 Java 微服务开发环境
java·docker·微服务
专业开发者8 小时前
蓝牙技术联盟推出网络照明控制(NLC)规范
网络·物联网
Kiyra8 小时前
阿里云 OSS + STS:安全的文件上传方案
网络·人工智能·安全·阿里云·系统架构·云计算·json
汪碧康9 小时前
【k8s-1.34.2安装部署】五.worker端containerd2.2.1、kubelet-1.34.2安装
docker·云原生·容器·kubernetes·jenkins·kubelet·xkube