詳解Docker架構、鏡像、容器及資源限制
阿新 • • 發佈:2018-08-10
開啟 獲取 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架構、鏡像、容器及資源限制