2021-05-12 14:32:11
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
# yum install docker-engine -y //直接安裝
# systemctl start docker.service //啟動服務
# systemctl enable docker.service //實現開機自啟動
# docker version 檢視版本資訊
Docker映象操作
Docker執行容器前需要本地存在對應的映象,如果不存在本地映象 Docker就會試預設映象倉庫htps://hub.docker. com下載,這是由 Docker官方維護的一個公共倉庫,可以滿足使用者的絕大部分需求。使用者也可以通過設定來使用自定義的映象倉庫。
搜尋映象
- 命令格式:docker search 關鍵字
# docker search cobbler //搜尋cobbler映象
獲取映象
- 命令格式:docker pull 倉庫名稱[:標籤]
對於docker來說,如果下載映象時不指定標籤,則預設會下載倉庫中最新版,因此也可通過制定標籤來下載指定版本,這裡的標籤(tag)就是用來區分映象版本的。
# docker pull jasonlix/docker-cobbler //下載cobbler映象
檢視映象資訊
# docker images //檢視所有映象資訊
REPOSITORY一映象屬於的倉庫。
TAG一映象的標籤資訊,標記同一個倉庫中的不同映象。
IMAGE ID一映象的唯一ID號,唯一標識了該映象。
CREATED一映象建立時間。
VIRTUAL SIZE一映象大小。
檢視單獨映象詳細資訊
# docker inspect 2211e1f06c4e
定義標籤
- 命令格式:docker tag 映象名稱:[標籤] 新名稱:[新標籤]
# docker tag jasonlix/docker-cobbler cobbler:cobbler1 //為jasonlix/docker-cobbler定義一個新標籤
刪除映象
- 方法一:docker rmi 倉庫名稱:標籤
- 方法二:docker rmi 映象ID號
# docker rmi cobbler:cobbler1
存出映象 載入映象
- 存出映象:當需要把一台機器上的映象遷移到另一台機器上的時候,需要將映象儲存成本地檔案,這一過程叫做存出映象。
- 載入映象:從別的機器拷貝映象,將該映象匯入到自己的映象庫中,這一過程叫做載入映象
- 命令格式:docker save -o 儲存檔名 儲存的映象
# docker save -o cobbler jasonlix/docker-cobbler
- 命令格式: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 start 容器ID/名稱
# docker start ID //啟動容器
- 命令格式:docker run
# docker run jasonlix/docker-cobbler /usr/bin/bash -c ls / //檢視映象根目錄
# docker run -d jasonlix/docker-cobbler /usr/bin/bash -c "while true;do echo htllo;done" 一直保持後台啟動
容器的終止
- 命令格式:docker stop 容器ID/名稱
# # docker stop ID //停止容器
容器的進入
- 命令格式:docker exec -it 容器ID/名稱 /bin/bash
-i 表示讓容器的輸入保持開啟
-t 表示讓docker分配一個偽終端# docker exec -it cb04f2231511 /bin/bash
容器的匯出與匯入
容器的匯出
- 命令格式:docker export 容器ID/名稱 > 檔名
# docker export cb04f2231511 > cobbler1 //匯出容器到檔案cobbler1
容器的匯入
- 命令格式:cat 檔名 | docker import - 生成的映象名稱:標籤
容器的刪除
- 可以使用docker rm 命令將一個已經處於終止狀態的容器刪除
- 命令格式:docker rm 容器ID/名稱
# docker stop cb04f2231511 //先停止容器再刪除 # docker rm cb04f2231511
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
相關文章