详解Docker架构、镜像、容器及资源限制

Docker概述

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。

?

Docker核心

  • 1.镜像(Image):类似与虚拟机的镜像,可以将他理解为一个面向Docker引擎的只读模板,包含了文件系统。
  • 2.容器(Container):类似于一个轻量级的沙箱子(因为Docker是基于Linux内核的虚拟技术,所以消耗资源十分少),Docker利用容器来运行和隔离应用。
  • 3.仓库(Repository)类似与代码仓库,是Docker集中存放镜像文件的场所。
    ?

Docker特点

  • 1.简化部署配置 极大提高工作效率。
  • 2.轻量级 可移植。
  • 3.启动和停止可以在秒级实现。
  • 4.节省硬件资源。
  • 5.直接在在操作系统层面上实现的虚拟化。

Docker安装

  • 配置仓库

    # vim /etc/yum.repos.d/ghostcloud.repo
    [dockerrepo]
    name=Docker Repository
    baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/
    enabled=1
    gpgcheck=1
    gpgkey=https://yum.dockerproject.org/gpg
  • 安装Docker
    # yum install docker-engine -y
    # systemctl start docker                    //启动docker
    # systemctl enable docker.service    //设置开机自启动
    # docker version                      //查看版本
    # docker info    //查看docker基本信息

?

Docker镜像操作

  • 搜索并获取镜像

    # docker search cobbler      //搜索关键字cobbler
    # docker pull jasonlix/docker-cobbler   //下载搜索出的结果

    ?

  • 查看镜像
    # docker images   //查看所有镜像  (也可以单独查询 后面跟仓库名称和标签)
    # docker inspect 2211e1f06c4e    //指定ID号查看 详细信息
    # docker tag jasonlix/docker-cobbler cobbler:cobbler    //添加新名称  新标签 (图中第三个)

?

  • 删除镜像
  • 删除之前确保没有被容器使用,若有容器使用需要先删除容器。
    # docker rmi cobbler:cobbler  //删除  注:当镜像有多个标签时只是删除标签 
  • 存出镜像和载入镜像
    # docker save -o cobbler jasonlix/docker-cobbler    //将本地镜像存为文件cobbler
    # docker load < cobbler     //载入镜像
    或者
    # docker --input cobller   //载入镜像

    ?

Docker容器操作

  • 容器的创建与启动
  • -i:让容器的输入保持打开
  • -t:让Docker分配一个伪终端
  • /bin/bash : 表示启动容器时要运行的命令
    # docker create -it jasonlix/docker-cobbler /bin/bash     //创建容器
    # docker ps -a    //查看所有容器
    # docker start 28f067a17c53       //开启容器
    # docker stop 28f067a17c53       //关闭容器

?

  • 容器的导入和导出

    将A机器的容器导出
    # docker export 28f067a17c53 > cobblertar    //将容器 导出命名为cobblertar   (指定导出容器ID )
    在B机器上导入
    # cat cobblertar | docker import -cobbler:test    //import导入后 生成镜像名cobbler:标签test

?

  • 容器的删除
  • 要删除正在运行的容器可以添加 -f 选项强制删除,建议先关闭容器在删除。
    # docker rm 28f067a17c53    //删除时指定 ID
  • 后台持续运行容器
    # docker run -d jasonlix/docker-cobbler /usr/bin/bash -c "while true;do echo hello;done"

注意:docker run ,等于执行了docker create ,在执行docker start 。就是说:在使用docker run创建容器的时候 如果检查镜像,若没有镜像,会从公共仓库下载,然后在创建容器,运行容器。
#docker run -itd --name c7 --network bridge --ip 192.168.200.132 centos:latest /bin/bash
下载资源 名字c7 网卡桥接 本地IP 镜像仓库centos 最新 latest

?

Docker资源限制

  • 限制CPU使用速率

    # docker run --cpu-quota 20000 centos(容器名)    //cpu的使用率限定为20%
  • 按比例分享CPU
    # docker run --cpu-shares 1024 centos   
  • 限制CPU内核使用
  • 使用 --cpuset-cpus 后面跟 0,1,2,3 (0表示第1个内核,1表示第2个内核.......)
    # docker run --cpuset-cpus 0,1 centos       //容器centos独享 第1和第2个内核
  • 限制内存使用
    # docker run -m 512m centos      //限制cents容器内存512M
  • 对blkio限制
  • 对容器的读写限制
  • 例如:限制容器的/dev/sda1 的写入ipos为1MB
    # docker run --device-write-bps /dev/sda1:1mb centos

原文地址:http://blog.51cto.com/13630803/2156930

时间: 2024-10-12 07:57:28

详解Docker架构、镜像、容器及资源限制的相关文章

JavaFX学习之道:详解JavaFX架构与框架

JavaFX 2.0平台是基于Java技术的富客户端平台.它使应用程序开发者更加容易的开发和部署跨平台的富互联网应用(RIA).JavaFX 2.0文档包含了JavaFX 2.0所提供的功能的概述. 图1描述了JavaFX 2.0平台的架构组件.后面的部分将对每一个组件进行逐一的描述.在JavaFX通用API的下面是用来运行JavaFX代码的引擎.这个引擎包括以下子组件:JavaFX高性能图形引擎(Prism);新的更小但更有效率的窗体系统(Glass);媒体引擎和Web引擎.虽然这些组件不是包

详解C++ STL priority_queue 容器

详解C++ STL priority_queue 容器 本篇随笔简单介绍一下\(C++STL\)中\(priority_queue\)容器的使用方法和常见的使用技巧. priority_queue容器的概念 \(priority_queue\)在英文中是优先队列的意思. 队列是一种基本的数据结构.其实现的基本示意图如下所示: 而\(C++STL\)中的优先队列就是在这个队列的基础上,把其中的元素加以排序.其内部实现是一个二叉堆.所以优先队列其实就是把堆模板化,将所有入队的元素排成具有单调性的一队

DOCKER学习_002:Docker的镜像容器管理

一 Docker的基本信息 前面已经安装了Docker,现在看一下已安装Docker的安装环境以及其他信息 1.1 系统环境 [[email protected] ~]# uname -r 3.10.0-957.27.2.el7.x86_64 [[email protected]-server3 ~]# cat /etc/redhat-release CentOS Linux release 7.7.1908 (Core) 1.2 Docker版本 [[email protected] ~]#

2 docker模板 镜像 容器 仓库管理

镜像管理 搜索镜像 # docker search centos [stars]:开发者的数量,应当选择开发者较多的 下载镜像 # docker pull centos 查看镜像 # docker images 复制镜像 # docker tag centos centos1[:tag] 启动镜像 docker run -t -i centos /bin/bash -t分配为终端 -i让容器标准输入打开 加上-d 即使exit退出为终端,容器也在运行,容器里的网站啊数据库都不会停止 查看镜像的运

docker的镜像 容器 仓库

docker镜像与容器 ##docker 下载镜像 docker pull centos ##查看docker里有哪些镜像 docker image ##创建容器 docker run -p 8080:8080 -d centos [-d :后台运行 ]不加-d 会一直显示 只能另开终端stop掉[ -p :绑定本机端口和容器端] ##查看docker正在运行的容器 docker ps ##查看docker的运行日志 docker logs -f 容器id[-f :动态显示容器运行日志]不加-f

详解Docker的网络模式

我们在使用docker run创建Docker容器时,可以用--net选项指定容器的网络模式,Docker有以下4种网络模式: host模式:使用--net=host指定container模式:使用--net=container:NAME_or_ID指定none模式:使用--net=none指定bridge模式:使用--net=bridge指定,默认设置 1.host模式众所周知,Docker使用了Linux的Namespaces技术来进行资源隔离,如PID Namespace隔离进程,Moun

详解HBase架构原理及安装部署步骤

一.什么是HBase HBase 是一个高可靠.高性能.面向列.可伸缩的分布式存储系统,利用Hbase技术可在廉价PC Server上搭建 大规模结构化存储集群. HBase 是Google Bigtable 的开源实现,与Google Bigtable 利用GFS作为其文件存储系统类似, HBase 利用Hadoop HDFS 作为其文件存储系统:Google 运行MapReduce 来处理Bigtable中的海量数据, HBase 同样利用Hadoop MapReduce来处理HBase中的

详解REST架构风格

编辑推荐: 本文来自于segmentfault.com,一起了解REST的内在,认识REST的优势,而不再将它当作是“理所当然” 引言 作为Web开发者,你可能或多或少了解一些REST的知识,甚至已经非常习惯于它,以至于在正式地学习REST的时候,你可能心里会想:“本来就是这样做的啊,不然还能怎么做呢?” 确实是这样,REST已经成为Web世界的一种内在架构原则.这主要是因为REST的产生确实与HTTP有着密不可分的联系.REST的提出者Roy Fielding在Web界是一位举足轻重的人物,他

Docker基础 :网络配置详解

本篇文章将讲述 Docker 的网络功能,包括使用端口映射机制来将容器内应用服务提供给外部网络,以及通过容器互联系统让多个容器之间进行快捷的网络通信,有兴趣的可以了解下. 大量的互联网应用服务包含多个服务组件,这往往需要多个容器之间通过网络通信进行相互配合.Docker 目前提供了映射容器端口到宿主主机和容器互联机制来为容器提供网络服务.接下来我们将讲述 Docker 的网络功能,包括使用端口映射机制来将容器内应用服务提供给外部网络,以及通过容器互联系统让多个容器之间进行快捷的网络通信. 端口映