咱們的工程使用了一個叫作termux的安卓上的linux終端,這個終端在全部的軟件包裏硬編碼了軟件的運行路徑(/data/data/com.termux/..),因爲安卓系統的權限設計,咱們名爲bingduoduo的應用並無使用該目錄的權限。這個bug在alpha階段查找,調試折磨了咱們很長時間,由於實在沒有想到應用的運行會和應用applicationId耦合在一塊兒。咱們最終找到的解決方法是本身編譯一份termux支持的全部的軟件包,將運行路徑改成/data/data/bingduoduo/..,並本身維護一個apt的下載源。爲了解決編譯時的環境問題,咱們使用了Termux項目組提供的docker鏡像,因此本篇文章主要是介紹windows下docker的使用。linux
首先應該介紹一下dockerdocker
Docker 是一個開源的應用容器引擎,讓開發者能夠打包他們的應用以及依賴包到一個可移植的容器中,而後發佈到任何流行的 Linux 機器上,也能夠實現虛擬化。容器是徹底使用沙箱機制,相互之間不會有任何接口。shell
————百度百科ubuntu
簡而言之,docker是一個輕量級的爲了解決環境依賴問題的虛擬機。windows
docker能夠在windows上使用,不過不多博客提到的是須要windows開啓Hype-V,而這項功能是windows 10家庭版和教育版不支持的,有的博客提供的改註冊表的功能親測無效。因此windows上使用docker的基本條件就是保證操做系統是windows專業版。bash
任務欄windows圖標上右鍵
—應用與功能
—右邊欄程序與功能
—左邊欄啓用或關閉Windows功能
—選擇Hype-V
並肯定,重啓電腦後Hype-V功能就已是開啓狀態的了。app
windows上的軟件安裝過程比較簡單,在docker官網上直接下載Docker for Windows並安裝就能夠了,操做過程都是圖形界面,比較符合windows用戶的使用習慣學習
windows上的docker使用邏輯與linux上有所不一樣,不能一鍵啓動容器,必須先啓動docker desktop才能夠啓動具體的容器。啓動時間比較長,在docker desktop沒有啓動的狀況下使用docker命令,或出現permission denied
的報錯信息編碼
docker啓動之後可使用docker run hello-world
命令來檢查本身是否安裝正確。操作系統
咱們上文所說docker的目的之一是爲了保證軟件的依賴關係,它與常見的VM相比,一個最大的不一樣就是它提供的dockerhub平臺使別人已經配置好的鏡像能夠供你們下載,這樣能夠避免本身再去辛苦配置環境。
簡單解釋一下docker 容器和鏡像的概念,容器是由鏡像實例化而來,類比咱們學習過的面向對象的概念,鏡像就是程序中定義的類,而容器是類實例化後的對象。
咱們能夠這樣獲得一個鏡像
docker pull ubuntu:14.04 #下載一個基於ubuntu14.04的鏡像,在不指明下載地址的狀況下,默認下載地址是docker hub
在鏡像的基礎上能夠獲得一個容器
docker run ubuntu:14.04 #會實例化一個容器,並給容器分配一個id
windows上使用docker的經常使用命令有(在powershell中)
#查看全部鏡像 docker images -q #查看全部容器 docker ps -a #查看全部運行中容器 docker ps #進入容器 docker exec -it containerID /bin/bash #中止全部容器 docker stop $(docker ps -q) #刪除全部容器 docker rm $(docker ps -aq) #刪除全部鏡像 docker rmi $(docker images -q) #刪除某個鏡像 docker rmi imageID #docker與宿主機互傳文件 #從docker到宿主機 docker cp containerName:containerpath/file.txt filepath #從宿主機到docker docker cp filepath containerName:containerpath/file.txt