2019年11月26日 星期二

技術:DOCKER使用筆記

 
想編譯OpenMV,又不想污染目前開發系統,決定安裝Docker。Docker是種獨立的保護系統,在上面安裝的項目,和原本系統並沒有關聯,參考資料( 連結 連結 連結 ),相對應的特性有三。

a. Docker是設計作為伺服器、console執行為主,不適合開發和執行有視窗畫面的計畫。

b. Docker離開後,所有過程中安裝的系統、撰寫程式和資料都會消失。若要保留過程中新安裝的系統和程式資料,就要以目前docker為基礎,將新套件和資料堆疊,成為新docker。參考連結。並且還可以對外發佈(連結)。

c. 資料共用分享。分成三個方式,類似cp指令,docker內部共享空間(volumn),docker和local機器共享空間。(連結)

安裝
sudo apt-get install docker.io
service docker status 確認有看到綠色圓圈 [q] exit
sudo usermod -aG docker root 將自己的使用者帳號加入至 docker 群組
sudo docker version 確認看到client 和 server 兩個部分,才算成功
sudo docker images 看到已經下載的各個項目

搜尋和下載docker單元
sudo docker search ubuntu ( ubuntu是基本項目 )
sudo docker pull ubuntu ( 檔案非常小,下載很快 )
sudo docker images ( Check 剛剛下載的ubuntu )
透過console的界面不容易了解,也可以透過web版本搜尋 http://hub.docker.com


執行docker單元
單次執行
sudo docker run ubuntu /bin/echo 'Hello world' 立刻會看到結果,但也會立刻結束
單機執行( 用於編譯micropython和opencv都是採用這種 )
sudo docker run -i -t ubuntu 只要console還在,docker就是一直留存著。會進入root@XXX  直到exit離開這個console
sudo docker ps 會看到process,尤其是name資訊可用在後續指令
背景執行( 還未使用過 )
sudo docker run -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"
sudo docker ps 取得xxxx
sudo docker logs XXXX 會看到前面動作的訊息一直跑出來
sudo docker stop XXXX

資料共用
例如在local有個目錄 bbb
docker run -v bbb:/home/kayjean/aaa/ -i -t elenaalexandrovna/opencv-python3
進入之後就會發現,docker系統內自己產生新的目錄/home/kayjean/aaa/ 兩目錄會內外共用
例如
docker run -v ~/smear:/smear -i -t elenaalexandrovna/opencv-python3
create a /smear in docker
and map to local disk ~/home/kayjean/smear

其他
docker功能強大,對於伺服器性質程式開發和使用有莫大助益,但一般使用尤其是牽涉UI互動部份,因為沒有溝通管道(似乎有些xwindow方案但很難用),對於靜態圖片影片或許可以透過檔案共用來檢視,動態或交互性強的應用幾乎全無用處。

1 則留言: