1. 程式人生 > 其它 >docker使用詳解

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 宿主機目錄(檔案):容器內目錄(檔案)...

  注意事項

  1. 目錄必須是絕對路徑
  2. 如果目錄不存在,會自動建立
  3. 可以掛在多個數據卷

  舉例:通過多個-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 是一個文字檔案

  • 包含了一條條的指令

  • 每一條指令構建一層,基於基礎映象,最終構建出一個新的映象

  • 對於開發人員:可以為開發團隊提供一個完全一直的開發環境

  • 對於測試人員:可以直接那開發時所構建的映象或者通過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容器中新增中文字元的支援》中有永久解決辦法

  3、《配置docker中的服務跟隨docker啟動而自動啟動