Docker学习笔记一

来源:互联网 发布:ebody哪些好看知乎 编辑:程序博客网 时间:2024/05/18 03:02


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.gz

sed '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

原创粉丝点击