Docker架構,鏡像及容器

Docker的核心概念

  • 鏡像

Docker的鏡像是創建容器的基礎,類似虛擬機的快照,可以理解爲是一個面向
Docker容器引擎的只讀模板,比如:一個鏡像可以是一個完整的Centos操作系統環境,
稱爲一個Centos鏡像;可以是一個安裝了 MYSOL的應用程序,稱之爲一個MySQL
鏡像等等.
Docker提供了簡單的機制來創建和更新現有的鏡像,用戶也可以從網上下載已經
做好的應用鏡像來直接使用.

  • 容器

Docker的容器是從鏡像創建的運行實例,它可以被啓動,停止和別除。所創建的
每一個容器都是相互隔離,互不可見的,可以保證平臺的安全性,還可以把容器看作
是一個簡易版的Linux環境, Docker利用容器來運行和隔離應用。

  • 倉庫

Docker倉庫是用來集中保存鏡像的地方,當創建了自己的鏡像之後,可以使用
push命令將它上傳到公共倉庫( Public)或者私有倉庫( Private),這樣一來當下次要
在另一臺機器上使用這個鏡像的時候,只需要從倉庫上pull下來就可以了。
倉庫註冊服務冊服務器( Registry)是存放倉庫的地方,其中包含了多個倉庫,每個倉庫
集中存放某一類鏡像,並且使用不同的標籤(tag)來區分它們,目前最大的公共倉庫
是 Docker Hub,其中存放了數量龐大的鏡像供用戶下載使用。

Docker鏡像

倉庫配置

# vim /etc/yum.repos.d/docker.repo
[docker]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg

Docker架構,鏡像及容器

安裝Docker

# yum install docker-engine -y   //直接安裝
# systemctl start docker.service   //啓動服務
# systemctl enable docker.service  //實現開機自啓動
# docker version  查看版本信息

Docker架構,鏡像及容器

Docker鏡像操作

Docker運行容器前需要本地存在對應的鏡像,如果不存在本地鏡像 Docker就會
試默認鏡像倉庫htps://hub.docker. com下載,這是由 Docker官方維護的一個公共倉庫,可以滿足用戶的絕大部分需求。用戶也可以通過配置來使用自定義的鏡像倉庫。

搜索鏡像

  • 命令格式:docker search 關鍵字
    # docker search cobbler  
    //搜索cobbler鏡像

    Docker架構,鏡像及容器

    獲取鏡像

  • 命令格式:docker pull 倉庫名稱[:標籤]

對於docker來說,如果下載鏡像時不指定標籤,則默認會下載倉庫中最新版,因此也可通過制定標籤來下載指定版本,這裏的標籤(tag)就是用來區分鏡像版本的。

# docker pull jasonlix/docker-cobbler   //下載cobbler鏡像

Docker架構,鏡像及容器

查看鏡像信息

# docker images //查看所有鏡像信息

Docker架構,鏡像及容器

REPOSITORY一鏡像屬於的倉庫。
TAG一鏡像的標籤信息,標記同一個倉庫中的不同鏡像。
IMAGE ID一鏡像的唯一ID號,唯一標識了該鏡像。
CREATED一鏡像創建時間。
VIRTUAL SIZE一鏡像大小。

查看單獨鏡像詳細信息

# docker inspect 2211e1f06c4e

Docker架構,鏡像及容器

定義標籤

  • 命令格式:docker tag 鏡像名稱:[標籤] 新名稱:[新標籤]
    # docker tag jasonlix/docker-cobbler cobbler:cobbler1   //爲jasonlix/docker-cobbler定義一個新標籤

    Docker架構,鏡像及容器

    刪除鏡像

  • 方法一:docker rmi 倉庫名稱:標籤
  • 方法二:docker rmi 鏡像ID號
    # docker rmi cobbler:cobbler1  

    Docker架構,鏡像及容器

    存出鏡像 載入鏡像

  • 存出鏡像:當需要把一臺機器上的鏡像遷移到另一臺機器上的時候,需要將鏡像保存成本地文件,這一過程叫做存出鏡像。

  • 載入鏡像:從別的機器拷貝鏡像,將該鏡像導入到自己的鏡像庫中,這一過程叫做載入鏡像

  • 命令格式:docker save -o 存儲文件名 存儲的鏡像
    # docker save -o cobbler jasonlix/docker-cobbler

    Docker架構,鏡像及容器

  • 命令格式:docker load < 存出的鏡像文件
    或者:
    docker --input 存出的鏡像文件

    上傳鏡像

  • 本地存儲的鏡像文件越來越多,就要一個專門的地方存放這些鏡像---倉庫。目前比較方便的就是公共倉庫,默認上傳的是Docker hub官方倉庫,需要註冊賬號完成登錄後才能上傳
  • 命令格式:docker push 倉庫名稱:標籤
    # docker tag jasonlix/docker-cobbler cobbler:cobbler2  //再定義一個標籤
    # docker login   //輸入用戶名,密碼和郵箱來完成登陸和註冊
    # docker push cobbler:cobbler2  //上傳鏡像

    Docker容器

    容器的創建與啓動

  • 容器的創建就是將鏡像加到容器的過程,Docker的容器十分輕量級,用戶可以
    隨時創建或者刪除。新創建的容器默認處於停止狀態,不運行任何程序,需要在其中
    發起一個進程來啓動容器,這個進程是該容器的唯一進程,所以當該進程結術的時候
    容器也會完全停止。停止的容器可以重新啓動並保留原來的修改。使用 docker create
    命令可以新建一個容器。
  • 命令格式:docker create[選項]鏡像 運行的程序
    # docker create -it jasonlix/docker-cobbler /bin/bash
    # docker ps -a     //查看容器中所有進程

    Docker架構,鏡像及容器

  • 命令格式:docker start 容器ID/名稱
    # docker start ID    //啓動容器

    Docker架構,鏡像及容器

  • 命令格式:docker run
    # docker run jasonlix/docker-cobbler /usr/bin/bash -c ls /      //查看鏡像根目錄

    Docker架構,鏡像及容器

    # docker run -d jasonlix/docker-cobbler /usr/bin/bash -c "while true;do echo htllo;done"  一直保持後臺啓動

    Docker架構,鏡像及容器

    容器的終止

  • 命令格式:docker stop 容器ID/名稱
    # # docker stop ID    //停止容器

    Docker架構,鏡像及容器

    容器的進入

  • 命令格式:docker exec -it 容器ID/名稱 /bin/bash
    -i 表示讓容器的輸入保持打開
    -t 表示讓docker分配一個僞終端
    # docker exec -it cb04f2231511 /bin/bash

    Docker架構,鏡像及容器

    容器的導出與導入

    容器的導出
  • 命令格式:docker export 容器ID/名稱 > 文件名
    # docker export cb04f2231511 > cobbler1    //導出容器到文件cobbler1
    容器的導入
  • 命令格式:cat 文件名 | docker import - 生成的鏡像名稱:標籤

容器的刪除

  • 可以使用docker rm 命令將一個已經處於終止狀態的容器刪除
  • 命令格式:docker rm 容器ID/名稱
    # docker stop cb04f2231511  //先停止容器再刪除
    # docker rm cb04f2231511

    Docker架構,鏡像及容器

    Docker資源控制

    限制cpu使用速率

    在docker中可以通過--cpu-quota選項來限制cpu使用率,cpu的百分比是以1000爲單位的

  • 格式:docker run --cpu-quota 20000 容器名 //cpu的使用率限定爲20%
    # docker run --cpu-quota 20000 cb04f2231511 

    多任務按比例分析CPU

    當有多個容器任務運行時,很難計算cpu的使用率,爲了使容器合理使用cpu資源,可以通過--cpu-share選項設置cpu按比例共享資源,這種方式還可以實現cpu使用率的動態調整。

    # docker run --cpu-shares 1024 容器A
    # docker run --cpu-shares 1024 容器B
    # docker run --cpu-shares 2048 容器C

    限制cpu內核使用

    如果服務器有16個核心,那麼cpu編號爲0~15,使容器綁定第1~4個內核使用。

    # docker run --cpuset-cpus 0,1,2,3 容器名

    對blkio的限制

    如果是在一臺服務器上進行容器的混合部署,那麼會出現同時有幾個程序寫磁盤數據的情況,這時可以--device-write-iops選項來限制寫入的iops,相應的還有--device-read-bps選項可以限制讀取的iops,但是這種方法只能針對blkio限制的是設備(device),而不是分區,相應的配置文件/sys/fs/cgroup/blkio/docker/容器ID/blkioo.throttle.write_iops_device。

    # docker run --device-write-bps /dev/sda1:1mb 容器名 //限制容器的/dev/sda1的寫入ipos爲1MB
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章