什么是docker
Docker is the world's leading software containerization platform.
Docker 是一個開源的應用容器引擎,讓開發(fā)者可以打包他們的應用以及依賴包到一個可移植的容器中,然后發(fā)布到任何流行的Linux機器上,也可以實現虛擬化。
為什么要用docker
舉個栗子
假設用戶試圖基于最常見的LAMP(Linux+Apache+MySQL+PHP)組合來運維一個網站。
傳統(tǒng)做法:
- 需要安裝Apache、MySQL和PHP以及它們各自運行所依賴的環(huán)境;
- 分別對它們進行配置(包括創(chuàng)建合適的用戶、配置參數等);
- 之后需要進行功能測試,看是否工作正常,如果不正常,意味著更多的時間代價和不可控的風險。
如果再加上更多的應用,事情會變得更加難以處理,而且一旦需要服務器遷移(例如從阿里云遷移到騰訊云),則需要重新部署和調試。大大地降低了工作效率
Docker:
- 通過容器來打包應用
- 遷移只需要在新的服務器上啟動需要的容器就可以了
docker節(jié)約了大量的寶貴時間,并降低部署過程出現問題的風險
Docker與傳統(tǒng)虛擬機對比

Docker容器與傳統(tǒng)虛擬機對比
Docker有以下幾個優(yōu)點:
- 更快速的交付和部署
- 更高效的虛擬化
- 更輕松的遷移和擴展
- 更簡單的管理
Docker基本概念
-
鏡像(Image)
類似于虛擬機鏡像,可以理解為一個面向Docker引擎的只讀模板,包含了文件系統(tǒng) -
容器(Container)
類似于一個輕量級的沙箱,Docker利用容器來運行和隔離應用 -
倉庫(Repository)
類似于代碼倉庫,是Docker集中存放鏡像文件的場所。
注:Docker利用倉庫管理鏡像的設計理念與Git非常相似
倉庫、鏡像、容器之間的關系
- 鏡像是創(chuàng)建Docker容器的基礎,容器是從鏡像創(chuàng)建的應用運行實例,鏡像自身是只讀的,容器從鏡像啟動的時候,Docker會在鏡像的最上層創(chuàng)建一個可寫層,鏡像本身保持不變;
- 倉庫是Docker集中存放鏡像文件的場所。
在使用docker命令的時候總要加上sudo,以下三句代碼可以解決這個問題。
$sudo groupadd docker
#將當前用戶加入docker組
$sudo gpasswd -a ${USER} docker
#重啟docker服務
$sudo service docker restart
鏡像操作常用命令
鏡像是只讀的
-
docker pull NAME[:TAG]從網上下載鏡像
-
docker images列出本地主機上已有的鏡像
-
docker rmi IMAGE[IMAGE...]刪除鏡像,其中IMAGE可以為TAG或ID
注意:若該鏡像創(chuàng)建的容器存在,鏡像文件無法刪除,必須刪除該鏡像創(chuàng)建的容器后,才可以刪除該鏡像
容器操作常用命令
-
docker create新建一個容器
-
docker ps查看容器 -
docker start啟動容器 -
docker run新建并啟動一個容器 -
docker stop終止容器 -
docker restart重啟容器 -
docker exec進入容器操作 -
docker rm刪除處于終止狀態(tài)的容器 - 參數
-
-t讓Docker分配一個偽終端(pseudo-tty)并綁定到容器的標準輸入上 -
-i讓容器的標準輸入保持打開 -
-d讓容器在后臺以守護態(tài)(Daemonized)形式運行
-


