目录
准备环境:
CentOS Stream 8
Docker 20.10.13
1.进程
相关进程docker-proxy、dockerd、containerd和container-shim-runc-v2。
1.1docker-proxy
这个进程专门负责端口映射(监听端口)。
一个docker进程运行时,会有两个docker-proxy进程监听端口,分别监听ipv4和ipv6的。
1.2dockerd
docker server的进程
1.3containerd
整个容器的管理进程
1.4container-shim-runc-v2
具体某个容器对应的进程
2.文件
/var/lib/docker/containers/下存放着不同容器的数据
我们进入任意一个容器,可以看到有如下文件
2.1hostname
存放的是容器的id
2.2hosts
存放的域名解析
2.3resolv.conf
存放dns服务器
#和宿主机的resolv.conf文件一致
2.4config.v2.json
docker container inspect wj-nginx-3显示的详细信息从这个文件中去取
2.4.1json格式
JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。--》格式用来描述数据
json类型的数据格式,非常类似于python里的字典:
数据的形式:文本
格式:key:value
非关系型的数据
非结构化数据
各种各样的程序之间交换数据(传递数据)的格式
json:
文本的数据 --》数据比较小,易懂,不需要再安装额外的软件
key:value -->结构清晰
3.网络
容器默认的私有网络是172.17.0.0/16,网关是宿主机的172.17.0.1。
所有容器上网都需要经过宿主机 --》底层使用的是iptables的SNAT和DNAT策略。
3.1docker网络的四种模式
host模式:
容器和宿主机共享ip地址和端口,共用一个Network Namespace
bridge(桥接)
docker0就是一个虚拟网桥,启动的容器会连接到这个虚拟网桥上。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。
container模式
多个容器共享一个ip地址,共享一个 Network Namespace,而不是和宿主机共享。
none模式
只有io回环网络,没有其他网卡。这种类型的网络没有办法联网,安全性极高。
3.2第五种网络模式
overlay:
可以实现实现跨主机docker容器之间的通信
3.3网络实战
3.3.1docker network ls
3.3.2docker network create --driver bridge sc
#不指定--driver默认创建为bridge类型
3.3docker run -it -d --name wj-centos-1 --network sc centos:7
#--network指定创建网络
#不加-it,centos容器会自动关闭
3.4docker exec -it wj-centos-1 /bin/bash
进入wj-centos-1容器内查看ip地址为172.20.0.2
进入wj-centos-1容器内查看ip地址为172.20.0.23
可以互相ping通
3.5docker network create cs
创建一个默认网络cs
创建一个使用cs网络的容器
3.6不同网络下的容器能否ping通?
cs网络下的容器可以ping通自己网关,和ping通cs网络的网关,但不能ping通sc网络下的容器。