Docker系列1-Docker介紹

1.Docker優勢

Docker目標是實現輕量級的操作系統虛擬化解決方案。
(1)啓動快
Docker相比於傳統的虛擬機方式要快得多,可以在秒級實現。
(2)資源利用率高
而且對系統資源的利用率很高,一臺主機上可以同時運行數千個 Docker 容器。
(3)更快速的交付和部署
開發者可以使用一個標準的鏡像來構建一套開發容器,開發完成之後,運維人員可以直接使用這個容器來部署代碼。
(4)更高效的虛擬化
Docker 容器的運行不需要額外的 hypervisor 支持,它是內核級的虛擬化,因此可以實現更高的性能和效率。
(5)更輕鬆的遷移和擴展
Docker容器幾乎可以在任意的平臺上運行,包括物理機、虛擬機、公有云、私有云。

2.Docker基本概念

(1)Docker鏡像
Docker 鏡像就是一個只讀的模板。可以包含一個ubuntu操作系統環境,程序運行環境等。
一個鏡像就是一層層的layer層文件,上層文件疊於下層文件上,若上層文件有與下層文件重複的,則覆蓋掉下層文件重複的部分。
在這裏插入圖片描述
初始掛載時讀寫層爲空。
當需要修改鏡像內的某個文件時,只對處於最上方的讀寫層進行了變動,不復寫下層已有文件系統的內容,已有文件在只讀層中的原始版本仍然存在,但會被讀寫層中的新版本文件所隱藏,當 docker commit 這個修改過的容器文件系統爲一個新的鏡像時,保存的內容僅爲最上層讀寫文件系統中被更新過的文件。
鏡像可以用來創建 Docker 容器。
(2)Docker容器
Docker利用容器來運行應用。容器是從鏡像創建的運行實例。它可以被啓動、開始、停止、刪除。每個容器都是相互隔離的、保證安全的平臺。
(3)Docker倉庫
倉庫是集中存放鏡像文件的場所。倉庫註冊服務器上往往存放着多個倉庫,每個倉庫中又包含了多個鏡像,每個鏡像有不同的標籤(tag)。
倉庫分爲公開倉庫和私有倉庫兩種形式。用戶自己創建的鏡像可以用push命令將它上傳到公有或者私有倉庫,這樣下次只需要從倉庫上pull下來就可以了。

3.Docker命令

(1)容器操作
docker [run|start|stop|restart|kill|rm|pause|unpause]

run/create[鏡像名]:  創建一個新的容器並運行一個命令
start/stop/restart[容器名]:啓動/停止/重啓一個容器
kill [容器名]: 直接殺掉容器,不給進程響應時間
rm[容器名]:刪除已經停止的容器
pause/unpause[容器名]:暫停/恢復容器中的進程

docker [ps|inspect|exec|logs|export|import]

ps:查看容器列表(默認查看正在運行的容器,-a查看所有容器)
inspect[容器名]:查看容器配置元數據
exec -it [容器名] /bin/bash:進入容器環境中交互操作
logs --since="2019-02-01" -f --tail=10 [容器名]:查看容器日誌 
cp path1 [容器名]:path 容器與主機之間的數據拷貝
export -o test.tar [容器名] / docker export [容器名]>test.tar : 文件系統作爲一個tar歸檔文件
import test.tar [鏡像名:版本號]:導入歸檔文件,成爲一個鏡像

(2)鏡像操作
docker images|rmi|tag|build|history|save|load]

images:列出本地鏡像列表
rmi [鏡像名:版本]:刪除鏡像
tag [鏡像名:版本] [倉庫]/[鏡像名:版本]:標記本地鏡像,將其歸入某一倉庫
build -t [鏡像名:版本] [path]:Dockerfile 創建鏡像
history [鏡像名:版本]: 查看指定鏡像的創建歷史
save -o xxx.tar [鏡像名:版本] /  save [鏡像名:版本]>xxx.tar : 將鏡像保存成 tar 歸檔文件
load --input  xx.tar / docker load<xxx.tar : 從歸檔文件加載鏡像

Docker pull/search/login/push/tag

tag [鏡像名:版本]  [倉庫]/[鏡像名:版本]:標記本地鏡像,將其歸入某一倉庫
Push [倉庫]/[鏡像名:版本]: 推送鏡像到倉庫  --需要登陸 
Search [鏡像名]:在倉庫中查詢鏡像 – 無法查詢到tag版本 
Pull [鏡像名:版本]: 下載鏡像到本地 
Login:登陸倉庫 

dockerfile指令

FROM:必須放在DOckerfile的第一行,表示從哪個baseimage開始構建 
MAINTAINER:可選的,用來標識image作者的地方
RUN: RUN都是啓動一個容器、執行命令、然後提交存儲層文件變更。
CMD:CMD的作用是作爲執行container時候的默認行爲(容器默認的啓動命令)當運行container的時候聲明瞭command,則不再用image中的CMD默認所定義的命令
一個Dockerfile中只能有一個有效的CMD,當定義多個CMD的時候,只有最後一個纔會起作用
EXPOSE:指令是聲明運行時容器提供服務端口,這只是一個聲明,在運行時並不會因爲這個聲明應用就會開啓這個端口的服務。
entrypoint:把整個container變成可執行的文件,且不能夠通過替換CMD的方法來改變創建container的方式。但是可以通過參數傳遞的方法影響到container內部
每個Dockerfile只能夠包含一個entrypoint,多個entrypoint只有最後一個有效
當定義了entrypoint以後,CMD只能夠作爲參數進行傳遞
ADD & COPY:把host上的文件或者目錄複製到image中(能夠進行自動解壓壓縮包)  
ENV:用來設置環境變量,後續的RUN可以使用它所創建的環境變量 
WORKDIR:用來指定當前工作目錄(或者稱爲當前目錄) 
USER:運行RUN指令的用戶 
VOLUME:用來創建一個在image之外的mount point

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章