一、docker 基础网络模式
默认daoker网络模式是 bridge
网络模式 | 含义 |
---|---|
bridge | 桥接网络(默认) |
host | 与宿主机共用网络 |
container | 容器和另外一个容器共用网络 |
none | 没有外部网络,只有本地的的回环地址 |
[root@k8s-node-2 ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
79dcb24fd5e3 bridge bridge local
dda0d0ab86d2 host host local
46d21f5a5200 none null local
# 创建启动容器时指定网络
docker run -d --network host alpine:latest
docker run -d -p 80:80 --network container:ID alpine:latest
二、自定义网络
[root@k8s-node-2 ~]# docker network
connect create disconnect inspect ls prune rm
[root@k8s-node-2 ~]# docker network create -d bridge --subnet 172.19.0.0/24 --gateway 172.19.0.1 cc
-d 指定网络模式
--subnet 指定网段
--gateway 指定网关
三、跨宿主机容器间通讯
类似于桥接网络
#创建
docker network create -d macvlan --subnet 10.0.0.0/24 --gateway 10.0.0.1 -o parent=eth0 macvlan-1
-o parent= 指定使用的网络接口
#应用,需要指手动分配 IP,并且ping 不通自己的宿主机
docker run -d --network macvlan-1 --ip 10.0.0.3 alpine:latest
四、跨宿主机容器间通讯之overlay
overlay是全局网络,在任意一个节点创建即可
1.在一台主机上下载并导入 progrium/consul 镜像
2.启动 consul服务 容器
consul:kv类型的存储数据库(key:value)
docker run -d -p 8500:8500 -h consul --name consul progrium/consul -server -bootstrap
#通过http://IP:8500 访问
3.所有docker 节点主机 配置docker.service 文件
#添加到 [Service] 后面
[root@docker01 ~]# vim /usr/lib/systemd/system/docker.service
[Service]
ExecStart=/usr/bin/dockerd --containerd=/run/containerd/containerd.sock
#重新加载启动
[root@docker01 ~]# systemctl daemon-reload
[root@docker01 ~]# systemctl restart docker.service
4.所有docker节点主机 配置 daemon.json 文件
#添加
[root@docker01 ~]# vim /etc/docker/daemon.json
...
"cluster-store": "consul://10.0.0.13:8500", #安装consul的主机IP+port
"cluster-advertise": "10.0.0.11:2376" #本地主机IP+port
...
#重启docker
systemctl restart docker
5.创建overlay 网络,并且使用它
docker network create -d overlay --subnet 172.16.0.0/16 --gateway 172.16.0.1 ol1
docker run -it --network ol1 --name one alpine:latest
真实原理:
每个容器有两块网卡,eth0实现容器间的通讯,eth1实现容器访问外网
五、docker容器prometheus监控
1.下载并解压 prometheus
下载地址:https://prometheus.io/download/
[root@k8s-master ~]# tar xf prometheus-2.12.0.linux-amd64.tar.gz -C /usr/local/
[root@k8s-master ~]# cd /usr/local/
[root@k8s-master local]# mv prometheus-2.12.0.linux-amd64 prometheus
#创建用户并授权
[root@k8s-master prometheus]# useradd prometheus
[root@k8s-master prometheus]# chown prometheus:prometheus /usr/local/prometheus
2.据情况修改配置文件 prometheus.yml
3.启动
[root@k8s-master prometheus]# ./prometheus --config.file=prometheus.yml &
#看服务是否启动
[root@k8s-master prometheus]# ps -ef | grep prometheus
也可以使用systemd方式启动服务,需在 /usr/lib/systemd/system/ 目录下,创建prometheus.service配置文件,然后启动服务。
4.访问

网友评论