1.docker 是什么
Docker 是一個開源的應(yīng)用容器引擎,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個可移植的鏡像中,然后發(fā)布到任何流行的 Linux 或 Windows 機器上,也可以實現(xiàn)虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口。
docker 官方的解釋,看起來有點像我們之前用過的虛擬機,但是和虛擬機還是有些區(qū)別的:
虛擬機模擬的是整臺機器包括硬件,每臺虛擬機都有自己的操作系統(tǒng),虛擬機一旦開啟預分配給他的資源將全部占用。
容器與我們的宿主機共享硬件資源及操作系統(tǒng),可以實現(xiàn)資源動態(tài)分配,容器包含應(yīng)用及依賴包,而且與其他容器共享內(nèi)核。容器在宿主機操作系統(tǒng)中,在用戶空間以分離的進程運行。
這是引用網(wǎng)上的對容器和虛擬機區(qū)別的一些概述,以我個人的理解來看,容器比虛擬機可以管理的粒度更小,更適合我們作為日常開發(fā)及應(yīng)用的部署,而且比虛擬機更輕,對宿主機硬件的要求也更低。
2.docker 能用來做什么
如果站在 php 開發(fā)的角度來看的話,我相信大部分人都對更換開發(fā)機,部署服務(wù)器運行環(huán)境感到頭大,那意味著你將要耗費大量的時間,對應(yīng)用進行下載、安裝以及配置,一不小心幾個小時就過去了,尤其是如果在本地調(diào)試需要切換不同 PHP 版本進行程序調(diào)試。當然你可以選擇使用集成環(huán)境來進行部署,不過安裝之后的自定義配置、擴展的安裝還是免不了。(很久之前本地開發(fā)是使用 phpstudy 的,確實是很方便,不知道現(xiàn)在是不是有更好的工具)
那么 docker 可以很好的解決這個問題,我們可以把自己已經(jīng)構(gòu)建好的一套運行環(huán)境打包成鏡像,下次再使用的時候直接下載鏡像進行安裝即可使用,而且可以安裝不同的版本,滿足我們對任意環(huán)境的組合要求,看這個樣子是不是有點像我們安裝操作系統(tǒng)時直接從鏡像安裝一樣?差不多的道理, 只不過 docker 可以將鏡像封裝的粒度更細,可以將一個 php、nginx 或任意你想要的應(yīng)用封裝起來,這樣我們在使用的時候選擇性就更多一些。
3.幾個簡單的命令:
docker pull -- 從遠程倉庫將鏡像下載至本地
docker run -- 運行一個容器
docker exec -- 對鏡像進行操作,常用的就是我們進入到鏡像中進行配置 (有點像我們遠程登錄一個 linux 服務(wù)器)
上面三條指令就可以幫助我們搭建一個簡單容器進行使用,下面是幾條常用的??慈萜鞯拿睿?/p>
docker images -- ??幢镜冂R像
docker ps -- 查看容器,默認只查看已啟動的,加入 "-a" 參數(shù)可以查看所有
docker start|stop|rm|rmi -- 容器的相關(guān)操作,分別對應(yīng): 開啟 | 停止 | 刪除容器 | 刪除鏡像
4 下載一份 ubuntu 的最新鏡像 容器
docker pull ubuntu
4.1 運行容器指定鏡像
docker run ubuntu echo 'Hello'
可以看到命令行下方打印出‘Hello’字樣,然后我們使用?docker ps?命令查看并沒有我們剛才的那個容器,這是因為容器在執(zhí)行完 echo 命令后沒有其他的可執(zhí)行命令后就會退出,這怎么行?我們使用容器主要就是想讓他保持運行,所以我們需要想個辦法讓容器始終保持運行
4.2讓容器始終保持運行
docker run -itd --name test-ubuntu ubuntu
參數(shù)說明:
t - 讓 docker 分配一個偽終端并綁定到容器的標準輸入上
i - 讓容器的標準輸入保持打開
d - 讓容器后臺運行
name - 給容器命名,否則就是系統(tǒng)隨機生成的一個名字,不好記,這里我們給他命名叫:test-ubuntu
it?參數(shù)可以讓容器始終保持一個偽終端等待用戶的輸入,但是因為加了?d?參數(shù),使容器進入后臺執(zhí)行了,所以不會有人輸入到容器,這樣容器就一直保持運行了??梢允褂?docker ps?命令查看一下哦。
4.3進入容器
docker exec -it test-ubuntu /bin/bash
說明:使用?exec?指令,在容器名稱后的參數(shù)表示進入容器后執(zhí)行的命令,這里我們使用 base 命令處理器,以達到我們和容器交互的效果。
這樣我們就進入容器中了,可以看到基礎(chǔ)的鏡像中很多的命令都不存在,需要我們一一進行安裝,我這里使用的是 ubuntu,所以可以執(zhí)行 apt-get update && apt-get install xxx 來進行安裝。
到這里 docker 的基礎(chǔ)使用我們已經(jīng)介紹完了,下面我們來實戰(zhàn)一下,創(chuàng)建一個我們平時使用的 php 容器。