今天是Docker討論系列的終章,文章將從組織的學習利用一張圖片分享幾個概念和命令來了解Dorcker的命令,後面再細化的在說明Docker run命令。java
若是你還沒看過前面的內容:sql
第一篇《容器的本質是什麼?容器從何而來?》docker
第二篇《Docker的安裝及架構介紹》數據庫
上圖摘自:http://bingohuang.com/simplify-docker-image-2/centos
Images:docker鏡像。可將容器轉化爲鏡像,也可從鏡像運行出一個個的容器實例。相似於虛擬機模板的概念。服務器
Container:容器。網絡
有running\stopped\pause三種狀態,相似於虛擬機的概念。架構
Tar files:能夠將鏡像打包爲tar文件,也能夠將打包後的tar文件從新load爲鏡像分佈式
Dockerfile:構建鏡像的聲明式配置文件。Docker技術的核心亮點之一。當咱們從一個基礎鏡像(centos鏡像)構建一個另外一個基礎鏡像(如java鏡像)時,通常不會使用的在centos鏡像中直接安裝java的方式,而是將java軟件與centos鏡像放置於一塊兒,在相同目錄下編寫好dockerfile,dockerfile中定義了java鏡像安裝的命令和環境配置參數等安裝信息,而後使用docker build命令就能夠將這些軟件及配置文件打包成一個java鏡像。這樣作的好處就是經過這種聲明式的構建方式最終構建了一個純淨的鏡像文件。學習
Registry:鏡像倉庫。用於存儲鏡像文件。
Engine:docker引擎
Docker version 查看docker版本
Docker info 顯示 Docker 系統信息,包括鏡像和容器數.
Docker events 從服務器獲取實時事件
狀態操做命令:
容器與鏡像相關的操做命令:
容器與tar文件相關的操做命令:
容器自身的其餘操做命令:
容器與鏡像相關的操做命令:
鏡像與tar files相關的命令:
鏡像與dockerfile相關的命令:
鏡像與倉庫相關的命令:
鏡像自身的命令:
鏡像與倉庫相關的命令:
Docker pull 從倉庫下載鏡像
Docker push 將鏡像上傳至倉庫
倉庫自身的命令:
Docker search 在倉庫中查找某個鏡像
Docker login 登陸倉庫
Docker logout 登出倉庫
Docker命令學習示意圖:
圖片來源:https://blog.csdn.net/yuanfenger/article/details/73316481
Docker命令學習示意圖:
圖片來源:https://www.twblogs.net/a/5c290471bd9eee01606d2e41
Docker run命令的做用在於從一個容器鏡像生成一個容器實例並將其啓動。
Docker run的主要命令參數以下:
使用docker run -it [IMAGE_NAME] 能夠啓動一個容器,並進入命令行交互界面:
使用exit可退出此容器
使用-d可讓容器在後臺運行:
--ip能夠爲容器指定ip地址,先使用docker network ls查看主機上的docker網絡:
使用--ip參數啓動容器:
此時會報錯,若是要使用自定義ip,只能使用自定義的容器網絡。先建立自定義的容器網絡:
也能夠在建立時手動指定容器的子網:
從新運行指定容器ip的命令:
執行成功,查看容器ip地址:
-h指定容器中的主機名,--name指定容器的名字
-p 能夠將主機上的端口映射到容器中。-p 8088:80 表示將主機的8088端口映射到容器的80端口上:
--privileged表示將對主機的文件更改的權限賦予此容器, -v 表示將主機的 /host/v1 目錄映射給容器上的 /con/logs目錄 ,若是容器中沒有此目錄,則會自動建立。執行命令
docker run -it --privileged -v /host/v1:/con/logs centos
在主機上的相應目錄可看到容器中對該目錄寫入的內容
爲容器掛載主機上的卷並設置容器只有對此卷的只讀權限:
docker run -it –privileged -v /host/v1:/con/logs:ro centos
-m用來指定容器內存,-c可用於指定容器的cpu配額
咱們能夠下載progrium/stress容器來測試容器的配額指定。使用如下命令查看該容器有哪些測試功能:
使用docker run -m 2000m可啓動一個內存佔用2000MB的容器,但該容器中未進行什麼進程時,該容器並不會直接佔用主機2000MB的內存。此時咱們能夠啓動stress容器,並使用--vm 1和 –vm-bytes 2000M表示啓動stress容器時在其中啓動一個佔用內存2000M的進程:
若是咱們在一個總限額爲2000MB的stress容器中啓動3個佔用500MB的進程,總共1500MB,那麼狀況以下:
在容器中是運行超過容器內存限額的進程的:
關於cpu限制,--cpu-share表示主機上運行的容器的cpu使用權重的定義。因爲主機上有4個cpu核,全部需 --cpu 4參數在容器中啓動4個進程以便將主機的cpu所有佔滿。
關於docker run中的 --cpus 參數,則是指定cpu的個數。當主機上有4個cpu時,容器只會使用總共1個cpu,也就是4分之1。
此數值也能夠爲小數,如0.5 ,那麼容器只會使用此主機8分之1的cpu。
當數值與主機的cpu核數相同時,將可以使用此主機的全部cpu配額,能夠看到4個cpu全滿。
咱們能夠啓動5個佔滿cpu的進程而不是4個,狀況以下:
對於Docker的分享就先討論到這邊
以後咱們仍是會持續發佈優質的文章
若是您以爲實用,歡迎關注+分享喲!
Docker操做實踐(1):容器的本質是什麼?容器從何而來?