前言

Docker和Kubernetes是我最近在學習的內容,本來是去年的目標,由於工作比較忙,沒有時間去學習,今年剩下的半年時間我會好好系統學習下相關的內容,最後在學習下Devops相關理念,希望最終能形成自己的一套思想;

Docker系列文章:

Docker基本組成

映象(Image)

Docker映象是一個特殊的檔案系統,包含了程式執行時候所需要的資源和環境。映象不包含任何動態資料,其內容在構建之後也不會被改變。映象就是模板,可以用來建立Docker容器,另外Docker提供了很簡單的機制來建立映象和更新現有的映象,使用者還可以直接從映象倉庫下載已經做好的映象來直接使用。

容器(Container)

容器就是執行映象的,映象和容器的關係,就像是面向物件程式設計中的類和例項一樣,映象是靜態的定義,容器是映象執行時的實體,容器可以被建立、啟動、停止、刪除、暫停等。每個容器都是互相隔離的,保證安全的平臺,容器可以理解為簡易版的Linux環境(包括root使用者許可權、映象空間、使用者空間和網路空間等)和執行再其中的應用程式。

倉庫(Repository)

倉庫就是存放映象的地方,倉庫中又包含了多個映象,每個映象有不同的標籤,用來區分不同的映象版本,倉庫分為兩種,公有和私有倉庫,最大的公開倉庫是Docker Hub,存放了數量龐大的映象供使用者下載,這裡倉庫的概念與Git類似,Registry可以理解為Github這樣的託管服務。

三者關係如下:

  1. 基於映象建立容器,也可以基於容器建立映象;
  2. 從倉庫拉取映象,也可以將本地映象推送到倉庫;

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 容器內路徑 主機路徑;

結束

歡迎大家點點關注,點點贊 !