zoukankan      html  css  js  c++  java
  • Docker初识

    1. 什么是Docker?
    是一个开源的容器引擎,可以方便对容器进行管理(容器是一种轻量级、可移植、自包含的软件打包技术)
    是基于容器的轻量虚拟化技术,基于内核的Cgroup和Namespace技术,并没有传统虚拟化的Hypervisor层,

    通信上,Docker并不直接与内核交互,而是通过Libcontainer(真正意义上的容器引擎)来交互
    通过clone系统调用来直接创建容器,通过 pivot_root 系统调用来进入容器, 通过直接操作cgroupfs文件来实现对资源的管控

    优点:(Docker对 Union mount的应用)
    1) 性能与物理机十分接近
    2) 极大提高磁盘利用率(对层级镜像的创新应用)
    即不同的容器共享底层的只读镜像,通过写入自己特有的内容后添加新的镜像层,该新增的镜像层和下层的只读镜像一起
    作为基础镜像被更上层的用户使用;
    3) 提高内存使用率
    不同的容器访问同一个文件时,只会占用一份内存(需要使用支持 Union mount 的文件系统,比如 AUFS 和 Overlay)

    相对于传统虚拟化的优点:

    1)更高效得利用系统资源

    2)更快速的启动时间:秒级启动

    3)更轻松的迁移

    2.

    Cgroup:

    Linux内核提供的一种可以限制、记录、隔离进程组所使用的物理资源(如:cpu,memory,IO等等)的机制

    http://blog.51cto.com/speakingbaicai/1359825

    Namespace:

    主要做访问隔离。其原理是针对一类资源进行抽象,并将其封装在一起提供给一个容器使用

    3.

    容器=Cgroup+Namespace+rootfs+容器引擎(用户态工具)。 
    其中各项功能分别为: 
    Cgroup:资源控制; 
    Namespace:访问隔离; 
    rootfs:文件系统隔离; 
    容器引擎:生命周期控制; 

    4. 三个基本概念(镜像、容器、仓库)

    镜像:分层存储

    容器:如果镜像是类的话,容器则是实例,镜像是静态的定义,容器是运行的实体,可被创建、启动、删除

    仓库:ubuntu:14.04其中ubuntu是仓库的名称,14.04是指定版本的镜像

    5. 使用镜像

    docker pull ubuntu:16.04

    docker image ls

    docker image rm $(docker image ls -q redis)   #删除镜像

    在 Dockerfile 文件所在目录执行:

    docker build -t nginx:v3 .    #新建一个镜像

    docker run --name webserver -d -p 80:80 nginx

    --name webserver : 将容器命名为webserver

    -d:后台运行容器,并返回容器ID;

    -p 80:80  将容器的80端口映射到主机的80端口

    docker kill $(sudo docker ps -q)  #停止运行的容器

    docker ps -q  #显示正在运行的容器id

    6. 应用场景

    公司:

    在单板上用docker比传统虚拟机更便捷

    用docker搭建openstack环境(为每一项服务都做了一份docker镜像,一个控制节点,一个计算节点)

    家里:

    尝试新的编程语言/数据库/命令行工具

    在unbuntu下使用centos或者suse

  • 相关阅读:
    vuejs 踩坑及经验总结
    Factory Method
    【Java】macOS下编译JDK8
    康威定律(Conway's law)
    first-child和first-of-type
    JavaScript 核心学习——继承
    All Tips
    21分钟教会你分析MaxCompute账单
    CTO职场解惑指南系列(一)
    威胁预警|首现新型RDPMiner挖矿蠕虫 受害主机易被添加恶意账户
  • 原文地址:https://www.cnblogs.com/stellar/p/8093633.html
Copyright © 2011-2022 走看看