docker使用詳解
一、docker簡介
docker 是一個開源的應用容器引擎,docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然後釋出到任何流行的 Linux 機器上,也可以實現虛擬化。
容器是完全使用沙箱機制,相互之間不會有任何介面(類似 iPhone 的 app),更重要的是容器效能開銷極低。
二、docker的應用場景
-
Web 應用的自動化打包和釋出。
-
自動化測試和持續整合、釋出。
-
在服務型環境中部署和調整資料庫或其他的後臺應用。
- 解決軟體跨境遷移的問題
三、docker的安裝
docker在各個平臺均可以使用,centos、ubuntu、mac、windows等,這裡就不一一列舉了,附上各個平臺的安裝連結
四、docker的架構
- 映象(image):用於建立docker容器的模板
- 容器(container):獨立執行的一個或一組應用,是映象的實體
- 倉庫(repository):用來儲存映象的
五、docker程序相關命令
1、啟動docker
systemctl start docker
2、停止docker
systemctl stop docker
3、檢視docker狀態
systemctl status docker
4、重啟docker
systemctl restart docker
5、設定開機啟動
systemctl enable docker
六、docker映象相關命令
1、檢視映象,檢視本地所有的映象
docker images
2、查詢所有映象的ID
docker images -q
3、搜尋映象:從網路中查詢需要的映象
docker search 映象的名稱
4、拉取映象:從Docker倉庫下載映象到本地,映象名稱格式為 名稱:版本號, 如果不指定,則是最新版,如果不知道映象的版本號,可以去hub.docker.com去查詢
docker pull 映象名稱
5、刪除指定映象:
docker rmi 映象id
6、刪除所有映象:
docker rmi `docker images -q` # 注意` 是鍵盤ESC下面的鍵
七、docker容器相關命令
1、檢視正在執行容器
docker ps
2、檢視所有容器
docker ps -a
3、建立並啟動容器
docker run 引數 映象名稱:版本號 引數說明: * -i:保持容器執行,通常與-t同時使用,加上 it 這兩個引數後,容器建立後自動進入容器中,退出容器後,容器自動關閉, * -t:為容器重新分配一個偽輸入終端,通常與 -i 同時使用 * -d:以守護(後臺)模式執行容器,建立一個容器在後臺執行,需要使用docker exec 進入容器,退出後,容器不會關閉。 * -it 建立的容器一般稱為互動式容器, -id 建立的容器一般稱為守護式容器 * --name: 為建立的容器命名 * -p 宿主機埠:容器埠 * -e:環境配置 * --restart:是否自動重啟
案例:docker run -id --name=community4 -p 8000:8000 -p 2223:22 -p 8005:8005 -e PYTHONIOENCODING=utf-8 --restart=always community:5.0 /start.sh
docker 預設的的編碼是ascii,所以在建立容器的時候,指定 -e PYTHONIOENCODING=utf-8
在建立容器是新增-–restart=always選項,保證docker服務啟動時,容器會自動執行
4、進入容器
docker exec 引數 容器id或者容器名 /bin/bash # 退出容器,容器不會關閉 示例:docker exec -it haoshun /bin/bash
5、停止容器
docker stop 容器名稱或者容器id
6、啟動容器
docker start 容器名稱或者容器id
7、刪除容器:如果是執行狀態則刪除失敗,需要停止容器才能刪除
docker rm 容器名稱或者容器id
8、檢視容器資訊
docker inspect 同期名稱或者容器id
八、docker資料卷
配置資料卷
docker run ... -v 宿主機目錄(檔案):容器內目錄(檔案)...
注意事項
- 目錄必須是絕對路徑
- 可以掛在多個數據卷
舉例:通過多個-v 可以配置多個數據卷
docker run -it --name=test2 -v /vagrant/test_data2:/home/test_data2 -v /vagrant/test_data3:/home/test_data3 ubuntu:16.04
九、docker轉映象
1、使用容器打包成映象
docker commit 容器id 要生成的映象名:版本號
2、將映象打包成壓縮檔案
docker save -o 壓縮檔名稱 要壓縮的映象名:版本號
3、載入壓縮包形式的映象檔案
docker load -i 壓縮檔名稱
注意:通過目錄掛載的形式的檔案,在通過容器製作映象的過程中,將不會被打包到映象中,直接在映象內的檔案則可以被打包到映象內
十、dockerfile構建docker映象檔案
-
-
包含了一條條的指令
-
每一條指令構建一層,基於基礎映象,最終構建出一個新的映象
-
對於開發人員:可以為開發團隊提供一個完全一直的開發環境
-
對於測試人員:可以直接那開發時所構建的映象或者通過Dockerfile檔案構建一個新的映象開始工作
-
對於運維人員:在部署時,可以實現應用的無縫移植
案例需求:自動以centos7映象
-
預設登入的路徑為/usr
-
可以使用vim
1、定義父映象: FROM centos:7 2、定義作者資訊:MAINTAINER Se7eN_HOU 3、執行安裝vim命令:RUN yum install -y vim # 注意,-y 表示當執行程式需要選擇是會自動選擇y,如果沒有該引數會一直停留在選擇處 4、執行預設的工作目錄:WORKDIR /usr 5、定義容器執行的命令:CMD /bin/bash
執行dockerfile生成映象
docker build -f dockerfile檔案的路徑 -t 設定新的映象的名稱和版本號 . # 注意最後的點,代表生成的映象路徑 -f 表示dockerfile路徑 -t 裝置新映象的名稱和版本號 最後的. 表示生成映象的路徑,為當前路徑
十一、docker的常用配置
不同平臺的配置方法大同小異,就不一一舉例了,但是一下配置確實非常常用的,可自行百度解決。
1、docker 配置SSH,可以遠端訪問docker
2、docker 配置支援中文,預設docker是不支援中文,網上大部分是臨時性的解決方案,《docker容器中新增中文字元的支援》中有永久解決辦法