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

相关推荐
制冷技术咨询与服务20 分钟前
某纯电牵引车整车CAN网络
网络·汽车·can·某纯电牵引车整车can网络
zhengqweasd23 分钟前
Linux网络(一):服务器数据包从网卡到应用程序,完整收包流程详解
linux·服务器·网络
脚踏实地,坚持不懈!37 分钟前
Linux 6.18.7 内存分配与回收 —— 代码梳理
linux·运维·网络
云边云科技_云网融合2 小时前
零售餐饮门店网络搭建:POS 交易稳定保障、IoT 设备联网运维、门店带宽优化、多终端并发适配
网络·物联网·零售
java_logo3 小时前
Docker 部署 ClickHouse Server:轻松搭建列式 OLAP 分析数据库平台
数据库·clickhouse·docker·私有化部署·olap·列式数据库·轩辕镜像
冰块的旅行3 小时前
完整的 Docker + Docker Compose 部署教程亲测有效
docker·容器
luj_17684 小时前
一线一区一变破解人盯人防守密码
开发语言·网络·c++·经验分享·算法
乌恩大侠4 小时前
【Sionna】docker build ubuntu cuda
ubuntu·docker·容器·spark·o-ru·ai-ran
luj_17684 小时前
中锋卡位与开放线博弈
c语言·开发语言·网络·经验分享·算法
数据知道4 小时前
AES 加密实战——模式选择(ECB/CBC/GCM)与安全陷阱
前端·网络·安全