root 发表于 2019-2-21 08:49:01

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

Docker概述
  Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
http://i2.运维网.com/images/blog/201808/09/83316d3f78394fef5662c38cb5bf4e74.jpg
   

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

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   //下载搜索出的结果
http://i2.运维网.com/images/blog/201808/09/aaf3387cca04d04b4fb740d7c2233d08.png
   

[*]  查看镜像

# docker images   //查看所有镜像(也可以单独查询 后面跟仓库名称和标签)
# docker inspect 2211e1f06c4e    //指定ID号查看 详细信息
# docker tag jasonlix/docker-cobbler cobbler:cobbler    //添加新名称新标签 (图中第三个)
http://i2.运维网.com/images/blog/201808/09/5e8640f10ef90e064adbfcf2cf675d7e.png
   


[*]删除镜像
[*]  删除之前确保没有被容器使用,若有容器使用需要先删除容器。

# 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       //关闭容器
http://i2.运维网.com/images/blog/201808/09/ad2a841a432f519c46d803b4b7fdc073.png
   


[*]容器的进入
[*]命令格式:docker exec -it    容器ID/名称   /bin/bash
[*]  进入之前需先开启运行这个容器

# docker start 28f067a17c53    //开始运行
# docker exec -it 28f067a17c53 /bin/bash
   


[*]  容器的导入和导出

将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



页: [1]
查看完整版本: 详解Docker架构、镜像、容器及资源限制