簡單來講就是一個裝應用的容器,能夠把你想裝的通通打包丟進去。Docker 在容器的基礎上,又進行了進一步的封裝,從文件系統、網絡互聯到進程隔離等等,極大的簡化了容器的建立和維護,這使得 Docker 技術比虛擬機技術更爲輕便、快捷。linux
Docker 與傳統虛擬化方式的不一樣之處在於,傳統虛擬機技術是虛擬出一套硬件後,在其上運行一個完整的操做系統,再在該系統上運行所需的應用進程;而容器內的應用進程直接運行於宿主的內核,容器內沒有本身的內核,並且也沒有進行硬件虛擬。所以容器要比傳統的虛擬機更爲輕便。 nginx
鏡像 :docker
Docker 鏡像,至關於一個特殊的文件系統,能夠提供用戶提供空間支持。除了提供容器運行時所需的程序、庫、資源配置等文件外,還包含了一些爲運行時準備的配置參數(如匿名卷、環境變量、用戶等)。鏡像不包含任何動態數據,其內容在構建後也不會改變。json
嚴格來講,鏡像是一個分層存儲的架構。它在構建時,會一層一層構建,前一層是後一層的基礎。每層構建完成後就不會再發生改變,後一層上的任何改動僅發生在這一層。好比,刪除前一層文件的操做,實際上只是在當前層作一個「上層已刪除」的標記,而不會真正把上層文件刪掉。在最終容器運行的時候,雖然不會看到這個文件,但實際上它將一直跟隨着鏡像。所以,在構建鏡像時應該額外當心,不要把無用的數據留到下一層去清理。bash
容器 :網絡
鏡像
與 容器
的關係,就像 Java 中 類
與 實例
的關係。鏡像是靜態的定義,容器是鏡像運行時的實體。容器的本質是一個進程,是真正跑項目程序、消耗機器資源、提供服務的部分,至關於一個小虛擬機,爲鏡像提供隔離的運行環境。架構
和鏡像相同,容器採用的也是分層存儲架構,每個容器運行時,是以鏡像爲基礎層,在其上建立一個當前容器的存儲層,即容器存儲層。容器存儲層的生命週期和容器同樣,當容器消亡時,該存儲層將隨之消亡,保存於其中的信息也一同丟失。性能
按照 Docker 最佳實踐的要求,容器不該該向其存儲層內寫入任何數據,容器存儲層要保持無狀態化。全部的文件寫入操做,都應該使用 數據卷
,或綁定宿主目錄,在這些位置的讀寫會跳過容器存儲層,直接對宿主(或網絡存儲)發生讀寫,其性能和穩定性更高。ui
數據卷的生存週期獨立於容器,容器消亡,數據卷不會消亡。所以,使用數據卷後,容器刪除或者從新運行以後,數據卻不會丟失。spa
倉庫 :
Docker 的倉庫用來存放鏡像。與 Git 相似,它提供一個集中存儲、分發鏡像的服務,使得咱們能夠從中心倉庫或我的倉庫自由拉取鏡像,也能夠將製做好的鏡像提交到遠程倉庫。
deepin 下直接安裝就好啦,其餘版本能夠參考 官方文檔 。
出現這個就說明安裝成功 :
由於docker的默認鏡像源下載比較慢,因此通常會換成國內的鏡像源。以阿里爲例,進入它的 容器鏡像服務,找到本身的鏡像加速器。
而後將它添入 /etc/docker/daemon.json(沒有就本身建立一個)。
最後重啓一下,就能夠正常使用了 :
默認狀況下docker是隻能經過root權限訪問的,就像下圖,或者是 sudo -s
以後再進行操做。
經過放大 docker.sock( Docker 守護進程 ( Docker daemon ) 默認監聽的 Unix 域套接字,容器中的進程能夠經過它與 Docker 守護進程進行通訊 )的訪問權限,可使普通用戶也能直接使用 docker 命令 :
docker pull [OPTIONS] IMAGE [:TAG]
複製代碼
docker images [OPTIONS] [REPOSITORY[:TAG]]
複製代碼
docker images
就夠啦docker run [OPTIONS] IMAGE[:TAG] [COMMAND] [ARG..]
複製代碼
docker exec [OPTIONS] CONTAINER COMMAND [ARG..]
複製代碼
docker ps
複製代碼
docker run (-d) IMAGE
複製代碼
docker run nginx
docker run -d nginx
docker exec -it [容器id] bash
複製代碼
docker run -d -p [主機端口:容器端口] [容器名或id]
複製代碼
docker run -d -p 8080:8080 nginx
docker restart [容器id]
複製代碼
docker stop [容器id]
複製代碼
docker start [容器id]
複製代碼
docker rm [容器id]
複製代碼
docker rmi [鏡像id]
複製代碼
注意刪除鏡像前要先刪除容器,而刪除容器前要先中止容器。
首先中止所有容器 :
docker stop $(docker ps -a -q)
複製代碼
而後進行刪除 :
docker rm $(docker ps -a -q)
複製代碼
-- tbc --