Docker操做實踐(3):Docker的操做詳解

今天是Docker討論系列的終章,咱們先從docker的命令開始介紹,再說明Docker run命令關鍵參數。java


若是你還沒看過前面的內容:sql

第一篇《容器的本質是什麼?容器從何而來?》docker

第二篇《Docker的安裝及架構介紹》數據庫



一張圖瞭解docker命令

image072.png上圖摘自:http://bingohuang.com/simplify-docker-image-2/centos



1. 概念介紹:

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鏡像。這樣作的好處就是經過這種聲明式的構建方式最終構建了一個純淨的鏡像文件。ide


Registry:鏡像倉庫。用於存儲鏡像文件。


Engine:docker引擎


2. 與Engine相關的命令

Docker version  查看docker版本

Docker info 顯示 Docker 系統信息,包括鏡像和容器數.

Docker events  從服務器獲取實時事件


3. 與容器相關的命令

狀態操做命令:

  • Docker start  從stop到running

  • Docker kill  從running到stop,直接kill容器進程

  • Docker stop  從running到stop,容器在中止前先完成一些保護性的動做以後再中止容器

  • Docker pause  暫停容器中全部的進程

  • Docker unpause  恢復容器中全部的進程


容器與鏡像相關的操做命令:

  • Docker commit  將容器保存爲一個新的鏡像

  • Docker create  從鏡像建立一個容器,該容器狀態爲stop

  • Docker run  從鏡像建立一個容器並將該容器啓動

  • Docker diff 檢查自鏡像運行以後,容器裏文件結構的更改


容器與tar文件相關的操做命令:

  • Docker export  將容器導出爲一個tar文件


容器自身的其餘操做命令:

  • Docker inspect  獲取容器/鏡像的元數據

  • Docker attach  鏈接到正在運行中的容器

  • Docker port  列出指定的容器的端口映射

  • Docker ps 查看系統中的容器

  • Docker top 查看容器中運行的進程信息

  • Docker rm  刪除容器

  • Docker logs  獲取容器的日誌

  • Docker wait  阻塞運行直到容器中止,而後打印出它的退出代碼

  • Docker exec  在運行的容器中執行命令

  • Docker network 操做容器網絡


4. 與鏡像相關的命令


容器與鏡像相關的操做命令:

  • Docker commit  將容器保存爲一個新的鏡像

  • Docker create  從鏡像建立一個容器,該容器狀態爲stop

  • Docker run  從鏡像建立一個容器並將該容器啓動

  • Docker diff 檢查自鏡像運行以後,容器裏文件結構的更改


鏡像與tar files相關的命令:

  • Docker import  將tar文件load爲鏡像,會丟失相關的元數據和歷史記錄

  • Docker load  將tar文件load爲鏡像

  • Docker save  將鏡像保存爲tar文件


鏡像與dockerfile相關的命令:

  • Docker build  基於dockerfile構建鏡像


鏡像與倉庫相關的命令:

  • Docker pull  從倉庫下載鏡像

  • Docker push  將鏡像上傳至倉庫


鏡像自身的命令:

  • Docker images 列舉鏡像

  • Docker rmi 刪除鏡像

  • Docker tag 爲鏡像打上標籤

  • Docker inspect  列出鏡像的詳細信息

  • Docker history  列出鏡像的構建歷史


5. 與 tar files相關的命令

  • Docker export  將容器導出tar文件

  • Docker import  將tar文件load爲鏡像,會丟失相關的元數據和歷史記錄

  • Docker load  將tar文件load爲鏡像

  • Docker save  將鏡像保存爲tar文件


6. 與dockerfile相關的命令:

  • Docker build  基於dockerfile構建鏡像


7. 與Registry相關的命令:


鏡像與倉庫相關的命令:

Docker pull  從倉庫下載鏡像

Docker push  將鏡像上傳至倉庫


倉庫自身的命令:

Docker search  在倉庫中查找某個鏡像

Docker login  登陸倉庫

Docker logout  登出倉庫


其餘docker命令學習示意圖

Docker命令學習示意圖:

image074.png圖片來源:https://blog.csdn.net/yuanfenger/article/details/73316481

Docker命令學習示意圖:

image076.png圖片來源:https://www.twblogs.net/a/5c290471bd9eee01606d2e41


Docker run命令簡介

Docker run命令的做用在於從一個容器鏡像生成一個容器實例並將其啓動。


Docker run的主要命令參數以下:

0079nlvZgy1g7bks52udbj30eh09k0t5.jpg


Docker run命令關鍵參數說明


1. -i  -t  -d

使用docker run -it [IMAGE_NAME] 能夠啓動一個容器,並進入命令行交互界面:


image078.png


使用exit可退出此容器

使用-d可讓容器在後臺運行:


image080.png

2. --ip

--ip能夠爲容器指定ip地址,先使用docker network ls查看主機上的docker網絡:


image082.png

image084.png


使用--ip參數啓動容器:


image086.png

此時會報錯,若是要使用自定義ip,只能使用自定義的容器網絡。先建立自定義的容器網絡:


image088.png


也能夠在建立時手動指定容器的子網:


image090.png


從新運行指定容器ip的命令:


image092.png


執行成功,查看容器ip地址:


image094.png

3. -h  –name

-h指定容器中的主機名,--name指定容器的名字

image096.png

image098.png

4. -p

-p 能夠將主機上的端口映射到容器中。-p 8088:80 表示將主機的8088端口映射到容器的80端口上:

image100.png


image102.png

5. -v

--privileged表示將對主機的文件更改的權限賦予此容器, -v 表示將主機的 /host/v1 目錄映射給容器上的 /con/logs目錄 ,若是容器中沒有此目錄,則會自動建立。執行命令 

docker run -it --privileged -v /host/v1:/con/logs centos

image104.png


在主機上的相應目錄可看到容器中對該目錄寫入的內容


image106.png


爲容器掛載主機上的卷並設置容器只有對此卷的只讀權限: 

docker run -it –privileged -v /host/v1:/con/logs:ro centos


image108.png

6. -m -c

-m用來指定容器內存,-c可用於指定容器的cpu配額


咱們能夠下載progrium/stress容器來測試容器的配額指定。使用如下命令查看該容器有哪些測試功能:

image110.png

使用docker run -m 2000m可啓動一個內存佔用2000MB的容器,但該容器中未進行什麼進程時,該容器並不會直接佔用主機2000MB的內存。此時咱們能夠啓動stress容器,並使用--vm 1和 –vm-bytes 2000M表示啓動stress容器時在其中啓動一個佔用內存2000M的進程:

image112.png

若是咱們在一個總限額爲2000MB的stress容器中啓動3個佔用500MB的進程,總共1500MB,那麼狀況以下:

image114.png


在容器中是運行超過容器內存限額的進程的:

image116.png


關於cpu限制,--cpu-share表示主機上運行的容器的cpu使用權重的定義。因爲主機上有4個cpu核,全部需 --cpu 4參數在容器中啓動4個進程以便將主機的cpu所有佔滿。

image118.png


關於docker run中的 --cpus 參數,則是指定cpu的個數。當主機上有4個cpu時,容器只會使用總共1個cpu,也就是4分之1。

image120.png


此數值也能夠爲小數,如0.5 ,那麼容器只會使用此主機8分之1的cpu。

image122.png


當數值與主機的cpu核數相同時,將可以使用此主機的全部cpu配額,能夠看到4個cpu全滿。

fc2504c51194f7dd2402a58f02402bf9

咱們能夠啓動5個佔滿cpu的進程而不是4個,狀況以下:

image126.png


做者:沈曉龍




好文推薦

Docker操做實踐(2):Docker的安裝及架構介紹

Docker操做實踐(1):容器的本質是什麼?容器從何而來?

使用sqlplus進行Oracle數據庫批量自動發佈

業務複雜、數據龐大、應用廣怎辦?瞭解下分佈式事務的解決思路!

贛州銀行加強科技創新,實現一鍵災備切換

相關文章
相關標籤/搜索