您好,登錄后才能下訂單哦!
今天是Docker討論系列的終章,我們先從docker的命令開始介紹,再說明Docker run命令關鍵參數。
如果你還沒看過前面的內容:
第一篇《容器的本質是什么?容器從何而來?》
第二篇《Docker的安裝及架構介紹》
上圖摘自:http://bingohuang.com/simplify-docker-image-2/
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? 從服務器獲取實時事件
狀態操作命令:
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 操作容器網絡
容器與鏡像相關的操作命令:
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? 列出鏡像的構建歷史
Docker export? 將容器導出tar文件
Docker import? 將tar文件load為鏡像,會丟失相關的元數據和歷史記錄
Docker load? 將tar文件load為鏡像
Docker save? 將鏡像保存為tar文件
Docker build? 基于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操作實踐(2):Docker的安裝及架構介紹
Docker操作實踐(1):容器的本質是什么?容器從何而來?
使用sqlplus進行Oracle數據庫批量自動發布
業務復雜、數據龐大、應用廣怎辦?了解下分布式事務的解決思路!
贛州銀行增強科技創新,實現一鍵災備切換
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。