在以前的學習中,我知道了docker的三大組件分別是----鏡像,容器,倉庫。瞭解了這三個組件也就初步理解了docker。因此我學習了這三個組件,並記錄下來。php
docker在運行一個容器時須要本地存在相對應的鏡像,執行流程大體是這樣的:mysql
經過docker pull來從鏡像倉庫獲取鏡像:linux
若是官方倉庫註冊服務器下載速度太慢,咱們能夠從其餘倉庫下載,這個時候由於不是從默認的註冊倉庫下載,因此咱們須要顯式的聲明下載倉庫地址:nginx
經過上面命令能夠查看本地已經下載的鏡像文件sql
從上面的信息中,咱們能夠得到:docker
TAG:用來標記來自同一倉庫的不一樣鏡像,好比 Ubuntu倉庫中中有多個鏡像,經過TAG來區分版本。若是不記得具體的版本了,默認用latest標記信息json
使用下載的鏡像啓動容器bootstrap
在容器中增長json和gem應用ubuntu
-m 來指定提交的說明信息,跟咱們使用的版本控制工具同樣;
-a 能夠指定更新的用戶信息;以後是用來建立鏡像的容器的 ID;
最後指定目標鏡像的倉庫名和 tag 信息。
建立成功後會返回這個鏡像的 ID 信息。
咱們可使用docker images查看新建立的鏡像。
當在一個團隊中分享新建立的鏡像時,咱們可使用Dockerfile來解決這個團隊分享問題。
Dockerfile包含一些怎樣建立鏡像的指令。
新建一個目錄和一個Dockerfile:
經過#來進行註釋
FROM指令告訴Docker使用哪一個鏡像來做爲基礎鏡像
接着是維護者的信息
RUN開頭的指令會在建立中運行。好比安裝一個軟件包
另外,ADD 命令是複製本地文件到鏡像;EXPOSE 命令來向外部開放端口;CMD 命令來描述容器啓動後運行的程序等。
編寫完Dockerfile後經過docker build來建立生成鏡像。
build 進程在執行操做。它要作的第一件事情就是上傳這個 Dockerfile 內容,由於全部的操做都要依據Dockerfile 來進行。Docker指令被按條執行,每一步建立一個新的容器,在容器中執行指令並提交修改,當全部指令執行完成後,返回最終id。
咱們能夠經過docker tag來修改鏡像的標籤。通過docker push將建立的鏡像上傳到倉庫中進行分享。
將鏡像導出到本地,可使用docker save命令
使用docker rmi命令刪除本地的鏡像
注意:
容器是獨立運行的一套或者一組應用以及他們的運行態環境。虛擬機能夠理解爲模擬運行的一整套操做系統(提供運行態環境和其餘系統環境)和運行在上面的應用。因此容器相較於虛擬機來講,顯得很是輕量級,啓動速度也是以秒級計算的。
容器啓動有兩種形式:
啓動容器命令用docker run來實現,以下面的例子:
當在執行docker run來建立一個容器時,docker的流程是:
那麼怎麼啓動一個以前已經終止的容器呢?咱們能夠利用docker start命令來將一個終止的容器從新啓動起來。
容器的核心爲所執行的應用程序,所須要的資源都是應用程序運行所必需的。在與容器交互的僞終端中咱們能夠經過ps或者top命令進行查看容器中進程的信息。
咱們想要讓一個容器在後臺以守護態形式運行。能夠在執行docker run命令時增長-d參數。
想要查看守護態容器在後臺輸出的信息,但是使用docker logs進行查看:
當加上-d運行容器時,容器以守護態形式進行在後臺執行,但有時候咱們想要進入到容器中進行工做,應該怎麼實現呢??
1.咱們可使用docker自帶的指令docker attach
2. nsenter命令
咱們能夠經過nsenter命令進入容器,而是用nsenter命令須要安裝nsenter工具,安裝步驟以下:
爲了鏈接到容器,咱們須要知道容器的第一個進程的PID,經過下面方法得到:
當咱們須要中止一個正在執行的容器時,使用docker stop指令。
若是該容器中指定的應用終止時,容器也會自動終止。好比上面咱們讓容器運行一個僞終端與用戶進行交互,當經過exit退出僞終端時,這個容器也自動終止了。
若是想讓一個運行態的容器終止後從新啓動,咱們可使用docker restart指令。
導出
docker中想要對容器進行備份導出也是很是簡單的,能夠經過docker export
導入
可使用docker import指令將容器快照導入爲鏡像。
docker load是用來導入鏡像存儲文件到本地鏡像庫;docker import是導入一個容器快照到本地鏡像庫。區別在於容器快照文件將會丟棄全部歷史記錄和元數據信息(即容器當時的快照狀態),而鏡像文件將保存完整記錄,體積更大。
當咱們想要刪除一個容器時,可使用docker rm指令來刪除一個終止狀態的容器。若是咱們想要刪除一個正在運行的狀態,能夠加上-f參數。
倉庫就是存放鏡像的地方。
目前 Docker 官方維護了一個公共倉庫 Docker Hub (https://hub.docker.com/) ,其中已經包括了超過 15000 的鏡像。大部分需求,均可以經過在 Docker Hub 中直接下載鏡像來實現。
經過docker login指令來輸入用戶名,密碼和郵箱後完成註冊和登陸。用戶的認證信息保存在本地的.dockercfg。
咱們想要查找官方倉庫中有哪些咱們須要的鏡像,能夠經過docker search指令實現,並經過docker pull下載到本地鏡像倉庫中。
以上~~