開始使用Docker:降落 (GUI)

YC
3 min readNov 19, 2018

--

透過前兩篇文章,我們已經可以熟練地使用 Docker 。但是,我們在進行機器學習時,必不可少地需要用到一些圖片檢視器來察看圖表、照片與影片等等。為此,我們需要用為我們的 Docker 加上一些新的設定。

我是參考了Real-time and video processing object detection using Tensorflow, OpenCV and Docker. 這篇文章再加以修改的。
(以下內容主要以 Ubuntu 為主,mac 與 windows 沒經過測試。)

第一步

我們需要先建立好一個 Dockerfile。
Dockerfile 請到我的 Github 上下載。

第二步

我們使用剛剛下載來的 Dockerfile 來建立一個 Docker image。
$ sudo docker build --tag dockergui/v1 ./your/path/to/dockerfile/folder

待 image 安裝完成後,再用:
$ sudo docker images 來檢查dockergui 是否存在。

第三步

可以開始運行 docker 了!
在 terminal 中打下以下指令:

$ xhost +local:docker
$ XSOCK=/tmp/.X11-unix
$ XAUTH=/tmp/.docker.xauth
$ xauth nlist $DISPLAY | sed -e 's/^..../ffff/' | xauth -f $XAUTH nmerge -
$ sudo docker run -it --device=/dev/video0 -e DISPLAY=$DISPLAY --env QT_X11_NO_MITSHM=1\ -v $XSOCK:$XSOCK -v $XAUTH:$XAUTH\
-e XAUTHORITY=$XAUTH dockergui/v1
$ xhost -local:docker

現在,應該已經進入了 Docker container。

最後一步

現在進去 container 試著跑一段code 來開啟鏡頭吧。

import numpy as np
import cv2
cap = cv2.VideoCapture(0)while(True):
# Capture frame-by-frame
ret, frame = cap.read()
# Our operations on the frame come here
# gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# Display the resulting frame
cv2.imshow('frame',frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()
上面是在 Docker 開啟鏡頭後畫面

如果有需要,可以回到上兩篇查閱:開始使用Docker:試飛
開始使用Docker:升空

以上是一個 Docker 三部曲的完結,如果覺得有幫助到你的話,希望可以拍個手給我吧。謝謝!

如果你覺得我的文章幫助到你,希望你也可以化讚為賞,加入 Liker ,再按下方的綠色拍手按鈕,為文章點讚!為作者增加收益,再回饋更多好文章!

--

--

YC
YC

Written by YC

提供更精確的技術內容為目標,另創立「程式愛好者」專頁。首席軟體工程師,專研後端技術、物件導向、軟體架構。

Responses (1)