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实现容器访问外网
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
[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
制作一个只支持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