前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Docker: GUI 应用,Ubuntu 上如何运行呢?

Docker: GUI 应用,Ubuntu 上如何运行呢?

作者头像
GoCoding
发布2021-05-06 14:28:50
发布2021-05-06 14:28:50
2.3K00
代码可运行
举报
文章被收录于专栏:GoCodingGoCoding
运行总次数:0
代码可运行
  • 操作系统: Ubuntu 18.04
  • 运行镜像: continuumio/anaconda3, based on debian

内容目录

Step 1) 安装 DockerStep 2) 准备镜像Step 3) xhost 添加 localStep 4) OpenCV 预览图片Step 5) OpenCV 预览相机结语

Step 1) 安装 Docker

代码语言:javascript
代码运行次数:0
运行
复制
# update the apt package index
sudo apt-get update
# install packages to allow apt to use a repository over HTTPS
sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common

# add Docker’s official GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# set up the stable repository
sudo add-apt-repository \
  "deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu \
  $(lsb_release -cs) \
  stable"

# update the apt package index
sudo apt-get update
# install the latest version of Docker Engine and containerd
sudo apt-get install docker-ce docker-ce-cli containerd.io

允许当前非 root 用户管理 Docker:

代码语言:javascript
代码运行次数:0
运行
复制
sudo groupadd docker
sudo usermod -aG docker $USER

参考:

  • Install Docker Engine on Ubuntu: https://docs.docker.com/engine/install/ubuntu/
  • Docker CE 清华源: https://mirrors.tuna.tsinghua.edu.cn/help/docker-ce/
  • Post-installation steps for Linux: https://docs.docker.com/engine/install/linux-postinstall/

Step 2) 准备镜像

拉取 OpenCV 镜像,用其显示 GUI:

代码语言:javascript
代码运行次数:0
运行
复制
docker pull joinaero/anaconda3-opencv3:1.0.0

Step 3) xhost 添加 local

代码语言:javascript
代码运行次数:0
运行
复制
$ xhost +local:docker
non-network local connections being added to access control list

Step 4) OpenCV 预览图片

代码语言:javascript
代码运行次数:0
运行
复制
# 运行镜像,指明 DISPLAY
docker run -it --rm \
  --name myenv \
  -e DISPLAY \
  -e QT_X11_NO_MITSHM=1 \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  -v $HOME/.Xauthority:/root/.Xauthority \
  joinaero/anaconda3-opencv3:1.0.0

# 激活 myenv 环境
conda activate myenv

# 预览 GoCoding.png
python - <<EOF
import cv2
while True:
  im = cv2.imread("/tmp/GoCoding.png")
  im = cv2.resize(im, (256, 256))
  cv2.imshow("GoCoding", im)
  key = cv2.waitKey(10) & 0xFF
  if key == 27 or key == ord('q'):
    break
EOF

Step 5) OpenCV 预览相机

代码语言:javascript
代码运行次数:0
运行
复制
# docker --device 指明 video 设备
docker run -it --rm \
  --name myenv \
  -e DISPLAY \
  -e QT_X11_NO_MITSHM=1 \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  -v $HOME/.Xauthority:/root/.Xauthority \
  --device /dev/video0 \
  --device /dev/video1 \
  joinaero/anaconda3-opencv3:1.0.0

# 激活 myenv 环境
conda activate myenv

# 预览相机图像
python - <<EOF
import sys
import cv2
cap = cv2.VideoCapture(0)
while True:
  ret, frame = cap.read()
  if not ret:
    sys.exit("Read the next frame failed")
  cv2.imshow("GoCoding", frame)
  key = cv2.waitKey(10) & 0xFF
  if key == 27 or key == ord('q'):
    break
cap.release()
EOF

结语

Go coding!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 GoCoding 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 内容目录
  • Step 1) 安装 Docker
  • Step 2) 准备镜像
  • Step 3) xhost 添加 local
  • Step 4) OpenCV 预览图片
  • Step 5) OpenCV 预览相机
  • 结语
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档