作者: 梦想天空分为蓝 | 来源:发表于2016-05-20 16:47 被阅读299次

    什么是Docker?

    Docker是一个开放源代码软件专案,让应用程序部署在软件容器下的工作可以自动化进行,借此在Linux操作系统上,提供一个额外的软件抽象层,以及操作系统层虚拟化的自动管理机制,Docker利用Linux核心中的资源分离机制,例如Cgroups,以及Linux核心命令空间(name space),来建立独立的软件容器(containers).这可以在单一Linux实体下的运作,避免启动一个虚拟机器造成的额外负担。linux核心对命名空间的支援完全隔离了工作环境中应用程序的视野,包括进程树、网络、用户ID与挂载文件系统,而核心的cgroup提供资源的隔离,包括cpu、内存、block/O与网络。

    docker和传统虚拟化方式的不同

    Paste_Image.png Paste_Image.png

    为什么要用Docker

    1.更快速的交付和部署
    2.更轻松的迁移和扩展
    3.更简单的管理
    
    Paste_Image.png

    Docker的基本概念

    镜像(Image)
    Docker镜像就是用来生成Docker容器的一个只读的模板。
    docker根据Docker镜像来生成的一个运行环境。

    容器(Container)
    容器是从镜像创建的运行实例。它可以被启动、开始停止,删除。每个容器都是相互隔离的、保证安全的平台。
    可以把容器看做一个简易版的Linux环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。
    镜像是只读的,容器在启动的时候创建一层可写层作为最上层。

    仓库(Repository)
    仓库是集中存放镜像文件的场所。
    仓库分为公开仓库(Public)和私有仓库(Private).
    最大的公开仓库是Dokcer Hub,存放了数量庞大的镜像供用户下载。
    私有仓库是本地网络内创建的一个私有仓库。
    用户创建了镜像后,可用Docker push命令将镜像上传到仓库。下次在其他机器上使用时再pull下来就行了.

    Docker安装

    centos ubuntu

    yum update apt-get update
    yum install docker.io apt-get install docker.io

    如果操作系统内核版本过低,需要升级操作系统内核。
    通过uname –r命令可以查看操作系统内核。建议内核升级到3.10以上。
    Linux内核源码可在www.kernel.org 上下载。

    docker启动

    1.service docker start
    2.修改配置文件
    Centos:/etc/sysconfig/docker
    Ubuntu:/etc/default/docker

    获取docker镜像

    1.docker search centos
    在docker hub上搜索镜像,部分结果如下

    Paste_Image.png

    docker基本操作

    1.docker images 列出本地镜像
    2.docker run -t -i docker.io/centos:latest /bin/bash
    使用docker.io/centos:latest启动一个容器
    3.docker commit 提交修改后的镜像

    docker数据管理

    docker内部及容器之间如果管理数据?

    主要有两种方式:
    1.数据卷(Data volumes)
    2.数据卷容器(Datavolume containers)
    挂载一个主机目录作为数据卷
    Docker run -d --name tomcat -v /var/logs/tomcat:/home/tomcat/logs/ docker.io/centos:latest

    Paste_Image.png

    数据卷容器

    如果有一些持续更新的数据需要在容器之间共享,最好创建数据卷容器。
    数据卷容器,就是专门提供数据卷供其他容器挂载的容器。
    在其他容器中用 --volumes-from来挂载

    我的Dokcer镜像设计

    Paste_Image.png

    关于docker的一些问题

    什么样的应用场景适合使用docker部署?
    什么服务应该放到Docker上?
    怎样保证docker中的数据安全性?
    怎样保证生产环境的稳定性以及故障的快速排除能力?
    怎样设计监控系统?
    应用迁移怎样保证数据同步?

    相关文章

      网友评论

        本文标题:

        本文链接:https://www.haomeiwen.com/subject/elynrttx.html