透過前兩篇文章,我們已經可以熟練地使用 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 cv2cap = 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 三部曲的完結,如果覺得有幫助到你的話,希望可以拍個手給我吧。謝謝!