前言
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 容器內路徑 主機路徑;
結束
歡迎大家點點關注,點點贊 !
