云计算之docker小结

预备:
    1.shipyard : docker管理web页面
    2.简单操作
        docker run --name xx -h xx
        docker stop container id
        docker ps 
        docker ps -l
        docker exec
        docker rm dockerid
        docker run -P 端口映射:随机映射
        docker run -p hostport:containerport
        数据映射
        -v src:dst
        --volumes-from
============
docker基础篇:
1.docker简介
    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化,方便快捷。
    
2.docker和虚拟机的比较
    特性        容器        虚拟机
    启动        秒级        分钟
    硬盘        MB        GB
    性能        接近原生    弱
    系统支持量    数千        几十个

3.docker应用场景
    1.面向开发
    2.面向测试
    3.面向运维
    4.面向自动化
    5.面向微服务
    6.大规模分布式架构[微信红包

4.环境准备
    1、yum安装 yum install   docker-io
      2、curl脚本安装 

5.docker数据管理
    1.数据卷
        [root@steve ~]# docker run -it --name volume-test1 -h mycentos -v /opt centos
        [root@steve ~]# docker run -it --name volume-test2 -h centos -v /opt:/opt centos
            :前面为物理机,后面为docker容器
        [root@steve ~]# docker run -it --name volume-test2 -h centos -v /opt:/opt:ro centos==>只读

    2.数据卷容器
        [root@steve ~]# docker run -it --name volume-test3 --volumes-from volume-test2 centos
        volume-test2为之前存在的容器,不用启动,用他来做其他容器的存储

6.docker镜像构建-手动构建
    [root@steve ~]# docker run --name nginx-man -it centos 
    [root@166dbd417f69 /]# yum -y install wget gcc gcc-c++ make openssl-devel
    [root@166dbd417f69 /]# wget https://nginx.org/download/nginx-1.9.3.tar.gz
    [root@166dbd417f69 /]# wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.38.tar.gz
    [root@166dbd417f69 /]# useradd -s /sbin/nologin -M www
    [root@166dbd417f69 /]# tar -xf nginx-1.9.3.tar.gz 
    [root@166dbd417f69 /]# cd nginx-1.9.3
    [root@166dbd417f69 /]# mkdir /usr/local/pcre
    [root@166dbd417f69 /]# tar -xf pcre-8.38.tar.gz -C /usr/local/pcre
    [root@166dbd417f69 /]# ls /usr/local/pcre
    [root@166dbd417f69 nginx-1.9.3]# ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --with-pcre=/usr/local/pcre/pcre-8.38
    [root@166dbd417f69 nginx-1.9.3]# make &&make install
    x//[root@166dbd417f69 nginx-1.9.3]# vi /etc/rc.local 
        /usr/local/nginx/sbin/nginx
    x//[root@166dbd417f69 nginx-1.9.3]# chmod +x /etc/rc.local
    [root@166dbd417f69 nginx-1.9.3]# vi /usr/local/nginx/conf/nginx.conf
        daemon off;
    [root@166dbd417f69 nginx-1.9.3]# exit
    [root@steve ~]# docker commit -m "my nginx" nginx-man steve/my-nginx #==>制作nginx镜像
    [root@steve ~]# docker images ==>可以看到刚刚手动构建的镜像
    [root@steve ~]# docker run -d -p 90:80 steve/my-nginx
        #以刚创建的镜像为基础,启动容器
    [root@steve ~]# docker run -d -p 90:80 steve/my-nginx /usr/local/nginx/sbin/nginx
    [root@steve ~]# curl 127.0.0.1:90 ==>可以看到网页即可

7.docker镜像购将-Dockerfile
    mkdir docker-file
    cd docker-file
    mkdir nginx
    cd nginx
    wget http://nginx.org/download/nginx-1.9.3.tar.gz
    wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.38.tar.gz
    vim Dockerfile
        # Version 1.0
        # Author: Steve

        # base images
        FROM centos
        
        # MAINTAINER
        MAINTAINER Steve

        # ADD
        ADD pcre-8.38.tar.gz /usr/local/src
        ADD nginx-1.9.3.tar.gz /usr/local/src

        # RUN
        RUN yum -y install wget gcc gcc-c++ make openssl-devel
        RUN useradd -s /sbin/nologin -M www

        # WORKDIR
        WORKDIR /usr/local/src/nginx-1.9.3
        RUN ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --with-pcre=/usr/local/src/pcre-8.38 &&make && make install
        RUN echo "daemon off;" >>/usr/local/nginx/conf/nginx.conf

        ENV PATH /usr/local/nginx/sbin:$PATH
        EXPOSE 80

        CMD ["nginx"]
    docker build -t nginx-file:v1 .    
    docer images ==>Dockerfile制作的镜像存在

8.docker实现资源隔离
    LXC(linux内核):使用Kernel namespace功能
        pid
        net
        ipc:进程交换方法
        mnt:类似chroot
        uts:docker容器拥有自己的namespace
        user

9.docker资源限制:cgroup
    control group 控制
        CPU 内存
        1.如何限制CPU?
        stress压力测试工具 
            yum -y install stress
            docker run -it --rm -c 512 press
                -c 开启多少个cpu进程
                -m 分配内存
    cd /opt/docker-file
    mkdir stress
    cd stress
    wget http://mirrors.aliyun.com/repo/epel-6.repo
    vim Dockerfile
        FROM centos
        ADD epel-6.repo /etc/yum.repos.d/
        RUN yum -y install stress&& yum clean all
        ENTRYPOINT ["stress"]
    docker build -t stress .

    每个docker有1024个cpu份额
    docker run -it --rm stress --cpu 1
    新开终端 top即可看到cpu跑到几乎100%
    docker run -it --rm stress --cpu 1
    两个容器都几乎100%
    docker run -it -c 512 --rm stress --cpu 1  #==>--rm:用于测试,关闭即删除
    docker run -it --cpuset-cpus 0,1 --cpu 1 --rm stress
    docker run -it --rm -m 128m stress --vm 1 --vm-bytes 120m --vm-hang 0

10.docker核心原理-网络和registry
    Docker(eth0)    Docker(eth0)
            |            |
           docker0(bridge)
                |ipv4 ip_forward
               eth0
    brctl show
    Docker-compose Fig

11.私有仓库registry
    docker run -d -p 5001:5000 registry
    1.打包镜像并上传到私有仓库
        

猜你喜欢

转载自blog.csdn.net/mx_steve/article/details/82082106