day82 Docker_网络类型,监控

Docker网络类型(插件形式)

None:不为容器配置任何网络功能,--net=none
Container:与另一个运行中的容器共享Network Namespace,--net=container:containerID(K8S)
Host:与宿主机共享Network Namespace,--network=host 性能最高
Bridge:Docker设计的NAT网络模型 默认类型
示例:创建一个网络

docker network create -d bridge --subnet 172.20.0.0/16 --gateway 172.20.0.1 oldma
docker network ls
docker run -it --network oldma alpine:3.9 
查看网络
docker inspect 16607f3eb0d0

Docker跨主机容器之间的通信macvlan

默认一个物理网卡,只有一个物理mac地址,虚拟多个mac地址

创建macvlan网络
[root@docker01 ~]# docker network create --driver macvlan --subnet 10.0.0.0/24 --gateway 10.0.0.254 -o parent=eth0 macvlan_1
[root@docker02 opt]# docker network create --driver macvlan --subnet 10.0.0.0/24 --gateway 10.0.0.254 -o parent=eth0 macvlan_1

设置eth0的网卡为混杂模式
ip link set eth0 promisc on

创建使用macvlan网络的容器
[root@docker01 ~]# docker run -it --network macvlan_1 --ip=10.0.0.66 alpine:3.9
[root@docker02 opt]# docker run -it --network macvlan_1 --ip=10.0.0.77 alpine:3.9 
/ # ping 10.0.0.66
PING 10.0.0.66 (10.0.0.66): 56 data bytes
64 bytes from 10.0.0.66: seq=0 ttl=64 time=1.447 ms

示例:部署可道云指定网络

[root@docker01 ~]# docker run -it --network macvlan_1 --ip=10.0.0.88 kod:v3

Dcoker跨主机容器通信之overlay

http://www.cnblogs.com/CloudMan6/p/7270551.html

docker03上
安装consul

[root@docker03 ~]# ls
docker_progrium_consul.tar.gz 
[root@docker03 ~]# docker load -i docker_progrium_consul.tar.gz 

consul存储ip地址的分配

docker run -d -p 8500:8500 -h consul --name consul progrium/consul -server -bootstrap

[root@docker03 ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                                                            NAMES
72d620678e64        progrium/consul     "/bin/start -server …"   18 seconds ago      Up 16 seconds       53/tcp, 53/udp, 8300-8302/tcp, 8400/tcp, 8301-8302/udp, 0.0.0.0:8500->8500/tcp   consul

设置容器的主机名
consul:kv类型的存储数据库(key:value)

docker01、02上:
vim  /etc/docker/daemon.json
{
  "hosts":["tcp://0.0.0.0:2376","unix:///var/run/docker.sock"],
  "cluster-store": "consul://10.0.0.13:8500",
  "cluster-advertise": "10.0.0.11:2376"
}

vim /usr/lib/systemd/system/docker.service
systemctl daemon-reload 
systemctl restart docker

2)创建overlay网络

docker network create -d overlay --subnet 172.16.2.0/24 --gateway 172.16.2.254 ol1

3)启动容器测试

docker run -it --network ol1 --name oldboy01 busybox /bin/sh 
每个容器有两块网卡,eth0实现容器间的通讯,eth1实现容器访问外网

image

docker的监控

一、docker cadvisor监控 + prometheus + grafana

k8s的安装方法 kubernetes 二进制安装 安装最新版,步骤繁琐!! https://github.com/minminmsn/k8s1.13/blob/master/kubernetes/kubernetes1.13.1%2Betcd3.3.10%2Bflanneld0.10%E9%9B%86%E7%BE%A4%E9%83%A8%E7%BD%B2.md

kubeadm 安装(网络原因) https://www.qstack.com.cn/archives/425.html

minikube 安装(网络原因)

yum 安装(最容易 1.5)

go编译安装(大神级别)

k8s-master 管理者 kubelet --docker 启动容器 kubelet --docker

二、docker zabbix监控 低级自动发现 自动创建监控项

创建磁盘分区

[root@docker02 opt]# dd if=/dev/zero of=/opt/test.raw bs=100M count=1

[root@docker02 opt]# mkfs.xfs /opt/test.raw 

[root@docker02 opt]# mount -o loop /opt/test.raw /mnt
[root@docker02 opt]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        48G  5.0G   44G  11% /
.....
/dev/loop0       97M  5.3M   92M   6% /mnt

image
[root@docker02 zabbix_agentd.d]# ls
mac.conf  userparameter_mysql.conf
[root@docker02 zabbix_agentd.d]# cat mac.conf 
UserParameter=net.if.mac[*],ifconfig $1 | awk '/ether /{print $2}'

[root@docker01 zabbix]# zabbix_get -s 10.0.0.12 -k net.if.mac[docker0]
02:42:f8:59:7d:d8
[root@docker01 zabbix]# zabbix_get -s 10.0.0.12 -k net.if.mac[docker0]
02:42:f8:59:7d:d8

image

制作一个只支持sshd服务的镜像

1):启动一个容器,并修改
docker run -it -p 1022:22 centos:6.8 /bin/bash
yum install openssh-server -y echo 'root:123456'|chpasswd /etc/init.d/sshd start
测试:ssh远程登录

2):将修改后的容器,保存为镜像
docker commit friendly_swartz centos6-ssh

3)测试新镜像,sshd是否可用
docker run -d -p 1122:22 centos6-ssh:latest /usr/sbin/sshd -D ssh root@10.0.0.11 -p 1122
制作了一个支持sshd和httpd双服务的镜像
1):启动一个容器,并修改
docker run -d -p 1122:22 centos6-ssh:latest /usr/sbin/sshd -D
yum install httpd -y /etc/init.d/httpd start

vi /init.sh #!/bin/bash /etc/init.d/httpd start /usr/sbin/sshd -D

chmod +x /init.sh
2):将修改后的容器,保存为镜像
docker commit 11bf5984784a centos6-httpd

3)测试新镜像,检测sshd和httpd是否可用
docker run -d -p 1222:22 -p 80:80 centos6-httpd:latest /init.sh

课前回顾: Linux容器是与系统其他部分隔离开的一系列进程,从另一个系统镜像rootfs运行,并由该镜像提供支持进程所需的全部文件。 容器镜像包含了应用的所有依赖项,因而在从开发到测试再到生产的整个过程中,它都具有可移植性和一致性。

1:chroot,ldd
2:lxc namespace(6大命名空间)和cgroup
3:docker和kvm区别,docker镜像基础操作,docker容器日常操作,commit制作镜像,dockfile来自动构建镜像

docker私有仓库registry
1)启动registry容器
docker run -d -p 5000:5000 --restart=always --name registry -v /opt/myregistry:/var/lib/registry registry

2)修改/etc/docker/daemon.json
配置文件 { "registry-mirrors": ["[https://registry.docker-cn.com](https://links.jianshu.com/go?to=https%3A%2F%2Fregistry.docker-cn.com)"], "insecure-registries": ["10.0.0.11:5000"] }

3)重启docker服务
systemctl restart docker

4)为镜像打标签
docker tag centos:6.8 10.0.0.11:5000/oldboy/centos:6.8

5)push推送镜像
docker push 10.0.0.11:5000/oldboy/centos:6.8
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容