docker教程(1)--基礎
Docker是什麼
Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後釋出到任何流行的Linux的機器上,也可以實現虛擬化,容器是完全使用沙箱機制,相互之間不會有任何介面。
Docker 可以粗糙的理解為一個輕量的虛擬機器,因為它和虛擬機器有類似的功能,可以將一個應用程式放在一個獨立的環境中執行。但是docker從本質上還是和虛擬機器有很大的區別的。
直觀上來講vm多了一層guest OS,同時 Hypervisor 會對硬體資源進行虛擬化,docker直接使用硬體資源,所以vm資源的利用率相對docker是低的。
Docker 安裝
mac 安裝:
linux 安裝:
開啟命令列,輸入命令:
sudo wget -qO- https://get.docker.com/ | sh
,命令解析:sudo 是以root許可權執行命令,wget是linux下的一個下載命令,-qO-
是讓wget命令的引數資訊,其中 q 是讓簡化wget的輸出資訊,O-(大寫的字母O和減號)是讓wget的輸出直接輸出到標準輸出,而不是輸出到檔案,|
是管道,指的是將輸出移交給後面的命令進行執行。所以上述命令的意思是,下載一個shell指令碼並執行這個shell指令碼。
輸出如下:
docker 預設是以root使用者進行執行的,如果我們要以非root使用者執行Docker,在命令列中執行如下命令:
sudo usermod -aG docker your-user(linux的使用者名稱)
sudo了
。
Docker 架構
client: 和docker daemon進行互動的
docker daemon: 負責docker的各種各樣的操作,如下載docker映象,執行docker容器等
registry: docker映象的Sass服務
Docker 簡單使用(執行一個nginx容器)
- 拉取image:命令列輸入
docker pull nginx
,從遠端拉取一個 nginx 映象,可以類比git;如果首次執行會有如下輸出:
Using default tag: latest
Error response from daemon: Get https://registry-1.docker.io/v2/library/nginx/manifests/latest: unauthorized: incorrect username or password
即你沒有許可權到從docker hub(可類比github)上下載映象,登陸 https://hub.docker.com/,註冊使用者。
之後在命令列中輸入 docker login
,根據提示輸入使用者名稱(不是註冊的郵箱…)和密碼即可登陸。
- 檢視映象:
docker images
- 執行映象:
docker run -p 8080:80 -d nginx
, 引數-p 8080:80
是docker埠的對映,即將docker容器的80埠對映到本地的8080埠,-d
是以守護程序的方式執行,即後臺執行nginx
是指的映象名稱。
輸出的結果為docker容器的ID。
開啟瀏覽器,訪問:localhost:8080,即可看到nginx的的預設頁面:
- 停止docker:
docker stop 容器ID
Docker 提交映象
上一小節中,我們運行了一個nginx的docker容器,下面我們對容器中的內容進行修改
vim index.html
<html> <h1>Hello Docker</h1> </html>
docker cp index.html 8a06e5c0eb58b86://usr/share/nginx/html
,其中8a06e5c0eb58b86是容器的ID,然後重新整理瀏覽器(localhost:8080),介面如下:
docker stop 8a06e5c0eb58b86
停止nginx容器,再重新啟動容器:docker run -p 8080:80 -d nginx
,
檢查瀏覽器輸出(localhost:8080),發現介面又變成了nginx的預設介面,上一小節修改的內容未能儲存。原因是在docker容器中做的所有操作都是暫時的,那怎麼才能儲存我們隊容器所做的操作呢?重複步驟1和步驟二的操作,即:
(1) vim index.html #<html><h1>Hello Docker</h1></html (2) docker run -p 8080:80 -d nginx (3) docker cp index.html 8a06e5c0eb58b86://usr/share/nginx/html
在瀏覽器中訪問localhost:8080,頁面輸出為Hello Docker
接著在命令列中輸入:docker commit -m 'hello_docker' 8a06e5c0eb58b864 hello_docker
,
成功後,會在控制檯輸出新的映象ID.
執行:docker images
其中hello_docker就是我們剛剛提交的一個新的映象,可以執行它,檢查容器內容。
Docker小節
命令 | 用途 |
---|---|
docker pull | 獲取image |
docker build | 建立image |
docker images | 列出image |
docker run | 執行container |
docker ps | 列出container |
docker rm | 刪除container |
docker rmi | 刪除image |
docker cp | 在host和container之間拷貝檔案 |
docker commit | 儲存改動為新的image |