1.什么是Docker?
Docker是容器管理系统
操作系统虚拟化:容器技术,Docker是其中一种;注:不支持异构(Linux镜像无法安装给Windows);
硬件虚拟化(平台虚拟化):传统的虚拟化技术,比如VMware;
1.1.容器利用的Linux内核功能
Namespaces 命名空间
Apparmor:
SELinux:
chroot:
CGroups:control group 资源(文件系统、CPU时间等)隔离
2.Docker如何部署?
使用镜像来交付应用程序,不要直接部署
2.1.安装
2.2.容器管理
2.3.网络
2.3.1.pipework
git clone https://github.com/jpetazzo/pipework.git
cp -rp pipework/pipework /usr/local/bin
2.3.2.weave
GitHub上热门的docker容器网络方案,生产环境常用
wget -O /usr/local/bin/weave https://raw.githubusercontent.com/zettio/weave/master/weave
chmod +x /usr/local/bin/weave
cd /usr/local/bin/
weave --help
//启动,以容器方式启动,会下载镜像进行
weave launch
//创建容器
weave run 172.17.0.10/16 --name=cccc1 -ti docker.io.ansible/centos7-ansible /bin/bash
//查看容器
docker ps
//登录容器
docker attach cccc1
ping 172.17.0.1
vim /etc/sysconfig/docker-network
2.3.3.Flannel与etcd
Flannel是coreos团队针对kubernets的网络工具
etcd应用在分布式环境下的key/value存储服务,用来存储路由信息和配置;配合Flannel使用
wget https://github.com/coreos/etcd/releases/download/v2.3.2/etcd-v2.3.2-linux-amd64.tar.gz
tar xvf-etcd-v2.3.2-linux-amd64.tar.gz
cd etcd-v2.3.2-linux-amd64
echo $PATH
cp etcd* /usr/local/bin
cat /usr/lib/systemd/system/etcd.service //适用于centOS7,脚本内存参看视频
//启动etcd
systemctl start etcd
2.3.4.openvswitch(源码包)
yum -y install make gcc openssl-devel autoconf automake rpm-build redhat-rpm-config python-devel kernel-devel kernel-debug-devel libtool wget iputils bridge-utils(安装多个包)
brctl addbr br0 //(创建网桥)
ip link set dev br0 up //(启动网桥0)
brctl addbr br1
ip link set dev br1 up //(启动网桥1)
mkdir -p /root/rpmbulid/SOURCES
wget http://openvswitch.org/releases/openvswitch-2.5.0.tar.gz
cp ~/openvswitch-2.5.0.tar.gz rpmbuild/SOURCES/
tar xfz ~/openvswitch-2.5.0.tar.gzsed 's/openvswitch-kmod,/g' ~/openvswitch-2.5.0/rhel/openvswitch.spec > ~/openvswitch-2.5.0/rhel/openvswitch_no_kmod.spec
rpmbuild -bb -nocheck ~/openvswitch-2.5.0/rhel/openvswitch_no_kmod.spec
cd ~/rpmbuild/RPMS/x86_64/
yum -y install ~/rpmbuild/RPMS/x86_64/openvswitch-2.5.0-1.x86_64.rpm
scp openvswitch-2.5.0-1.x86_64.rpm 192.168.xxx.xx:/root //发送对端服务器同样安装
systemctl --all |grep openvswitch
//安装本地包
yum -y install openvswitch-2.5.0-1.x86_64.rpm
//启动
systemctl enable openvswitch;systemctl start openvswitch
systemctl status openvswitch
//配置OVS:openvswitch
ovs-vsctl add-br ovs0
ovs-vsctl set bridge ovs0 stp_enable=tree //开启生成树
ovs-vsctl add-port ovs0 br0 //将前面创建的网桥加入ovs0交换机中
ovs-vsctl add-port ovs0 br1
//创建隧道
ovs-vsctl add-port ovs0 gre0 --set interface gre0 type=gre options:remote_ip=192.168.xx.xx //对端服务器地址
ovs-vsctl add-port ovs0 gre0 --set interface gre0 type=gre options:remote_ip=192.168.xx.xx //当前服务器地址
//当前服务器创建第一个容器
docker run -itd --name==cc1 docker.io/ansible/centos7-ansible /bin/bash
//进入新建容器,查看ip
docker attach cc1
//使用pipework给容器添加一个额外的网卡及ip
pipework br0 -i eth1 cc1 192.168.1.11/24 //使用新网段
//当前服务器创建第二个容器
docker run -itd --name==cc2 docker.io/ansible/centos7-ansible /bin/bash
//进入新建容器,查看ip
docker attach cc2
//使用pipework给容器添加一个额外的网卡及ip
pipework br1 -i eth1 cc1 192.168.2.11/24 //不同的容器连接不同的接口
//对端服务器创建第一个容器//对端服务器创建第二个容器
2.4镜像
2.4.1.基础镜像
//安装一个最小化的操作系统
tar --numberic-owner --exclude=/proc --exclude=/sys -cvf centos7-base.tar/
//使用docker import输入
cat centos6-base.tar | docker import - centos7-base:latest //latest最新的
docker run -it --name c104 192.168.122.151:5000/centos7-base /bin/bash
2.4.2.commit
//基于现有的容器生成镜像
docker commit c2 192.168.122.151:5000/centos7-ip /bin/bash
2.4.3.build
//基于Dockerfile创建镜像
mkdir dockerbuild
cd dockerbuild
touch Dockerfile
3.Docker仓库
共有仓库:dockerhub
私有仓库:registry
4.Docker容器管理工具
Docker Machine
Docker Compos
5.Docker集群
Docker Swarm
Kubernets
Mesos
6.Docker与OpenStack
Docker上部署OpenStack
OpenStack上部署Caas