1. 程式人生 > >詳解Docker架構、鏡像、容器及資源限制

詳解Docker架構、鏡像、容器及資源限制

開啟 獲取 roc 隔離 圖片 詳解 inf cobbler ghost

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

詳解Docker架構、鏡像、容器及資源限制