前言
Docker和Kubernetes是我最近在學習的內容,本來是去年的目標,由於工作比較忙,沒有時間去學習,今年剩下的半年時間我會好好系統學習下相關的內容,最後在學習下Devops相關理念,希望最終能形成自己的一套思想;
Docker系列文章:
Docker基本組成
映象(Image)
Docker映象是一個特殊的檔案系統,包含了程式執行時候所需要的資源和環境。映象不包含任何動態資料,其內容在構建之後也不會被改變。映象就是模板,可以用來建立Docker容器,另外Docker提供了很簡單的機制來建立映象和更新現有的映象,使用者還可以直接從映象倉庫下載已經做好的映象來直接使用。
容器(Container)
容器就是執行映象的,映象和容器的關係,就像是面向物件程式設計中的類和例項一樣,映象是靜態的定義,容器是映象執行時的實體,容器可以被建立、啟動、停止、刪除、暫停等。每個容器都是互相隔離的,保證安全的平臺,容器可以理解為簡易版的Linux環境(包括root使用者許可權、映象空間、使用者空間和網路空間等)和執行再其中的應用程式。
倉庫(Repository)
倉庫就是存放映象的地方,倉庫中又包含了多個映象,每個映象有不同的標籤,用來區分不同的映象版本,倉庫分為兩種,公有和私有倉庫,最大的公開倉庫是Docker Hub,存放了數量龐大的映象供使用者下載,這裡倉庫的概念與Git類似,Registry可以理解為Github這樣的託管服務。
三者關係如下:
- 基於映象建立容器,也可以基於容器建立映象;
- 從倉庫拉取映象,也可以將本地映象推送到倉庫;
Docker如何工作
Docker是一個Client-Server結構,Docker守護程序執行在主機上,客戶端與Dcoker通過Socket訪問,守護程序接收客戶端的命令並且管理執行主機的容器,容器是一個執行環境,就是我們的集裝箱;
Docker的基本命令
基礎命令
docker info 獲取docker系統配置的資訊;
docker version 獲取docker版本;
docker help 獲取docker幫助文件;
映象命令
docker images 檢視映象相關的資訊:
- -a 檢視所有映象;
- -q 檢視容器id;
docker search 搜尋容器資訊
- -filter=STARS=3000 關注度大於300以上的;
docker pull 下載映象,採用分層下載,採用聯合檔案系統,預設是新的版本的
- dcoker pull mysql:5.7 dcoker pull 映象名稱:版本號(Tag);
docker rmi 刪除映象
- docker rmi -f 映象ID
- docker rmi -f $(docker iamges -aq) 刪除全部的映象id
容器命令
docker run 是Docker中最為核心的一個命令,用於新建並啟動容器
- -name="名稱" 容器名稱;
- -d 使用後臺互動的方式;
- -it 使用互動方式,進入到容器內部;
- -p 用於將容器的埠暴露給宿主機的埠,格式為:hostPort:containerPort ,通過埠的暴露,可以讓外部主機能夠訪問容器內的應用;
- -P 隨機指定埠;
- -c 用於給執行在容器中的所有程序分配 CPU 的 shares 值,這是一個相對權重,實際的處理速度與宿主機的 CPU 相關
- -m 用於限制為容器中所有程序分配的記憶體總量,以 B、K、M、G 為單位;
docker ps 列出正在執行的容器
- -a 列出當前正在執行的容器和歷史執行過的容器;
- -n=? 顯示最近建立的容器;
- -q 只顯示容器的編號;
退出容器
- exit 容器停止並退出;
- Ctrl + P + Q 容器停止並退出;
刪除容器
- docker rm 容器id刪除指定的容器,不能刪除正在執行的容器;
- docker ps -a -q | xargs docker rm 刪除所有的容器;
啟動和停止容器的操作
- docker start 容器id 啟動容器;
- docker restart 容器id 重啟容器;
- docker stop 容器id 停止容器;
- docker kill 容器ID 強殺容器;
docker logs 檢視docker logs的日誌
- --details 顯示日誌詳情;
- -f 跟隨日誌輸出顯示;
- --tail 從末尾開始顯示指定行的資料;
- -t 顯示時間戳;
- --since 開始時間;
- --until 結束時間;
docker top 檢視容器的程序資訊
docker inspect 檢視映象的元資料
進入正在執行的容器
- docker exec -it 容器id;
- docker attach 容器Id;
容器拷貝檔案到主機上
docker cp 容器Id 容器內路徑 主機路徑;
結束
歡迎大家點點關注,點點贊 !