使用 Docker 快速创建 OpenCV 实验环境

使用 Docker 快速创建 OpenCV 实验环境

  最近发现Microsoft的改变蛮大的,首先是Window 10 的 2017 Fall Creator Update 将 WSL(Windows Subsystem for Linux) 更新为release版本,然后是 Docker for Windows 开始支持 Linux 和 Windows 两种容器环境,Microsoft 对于服务器操作系统进行精简,推出 Nano Server,它不支持任何类型的本地访问机制,将GUI层彻底进行清理,所有管理工作皆需要以远程方式通过 WMI(Windows Management Instrumentation) 与 PowerShell 相结合来实现。 Microsoft 推出 Nano server 和 WSL 己经将15年前推出 Windows XP 时的理念改的面目全非,可见软件的构建方式与交付途径已经发生了巨变,理念是要不断更新的。
  学习一个库最直接的方式是读官方文档,然后实践一些Demo,但实验环境的构建过程往往会有很多坑要踩,在踩坑的过程中浪费了大量的精力,影响了学习的热情。容器技术的出现让这种尴尬发生了彻底的变化,只要分享一个容器的构建文件,就可以一键搭建起实验环境,彻底改变了我们对软件运行环境部署的认知。我们不再关心自己需要哪个Linux发行版,不再需要纠结编译器的版本,某些情况下甚至不再需要臃肿的虚拟机方式去模拟运行环境。现在很多成熟的库都会提供多种语言接口,例如C,C++,Java,Go,Python,将第三方库集成到生产环境下当然要优先考虑生产环境的兼容性去选择语言接口,但验证算法和功能时使用Python当然是最便捷的方式,在配上Jupyter notebook 以web的形式去直观的验证算法,已经方便的很精致了。下面我们开始使用 Docker 快速的构建一个 OpenCV 的 Python 开发环境。

1. 构建镜像

首先创建Dockerfile

# Use Ubuntu:16.04 image as parent image
FROM ubuntu:16.04

ENV AUTHOR aggresss
ENV DEBIAN_FRONTEND noninteractive

# Modify apt-get to aliyun mirror
WORKDIR /
RUN sed -i 's/archive.ubuntu/mirrors.aliyun/g' /etc/apt/sources.list

# Install necessary library
RUN apt-get update
RUN apt-get -y install apt-utils
RUN apt-get -y install git
RUN apt-get -y install python python-dev python-pip
RUN apt-get -y install lib32z1 libglib2.0-dev libsm6 libxrender1 libxext6 libice6 libxt6 libfontconfig1 libcups2 

# Clone the docker-opencv-python repository
RUN git clone https://github.com/aggresss/docker-opencv-python.git /docker-opencv-python

# Modify pip mirror
WORKDIR /docker-opencv-python
RUN mkdir -p /root/.pip
RUN cp -f pip.conf /root/.pip/

# Install necessary python-library
RUN pip install --upgrade pip
RUN pip install numpy scipy matplotlib pillow
RUN pip install opencv-python
RUN pip install ipython==5.5.0
RUN pip install jupyter

# Modify Jupter run arguments
WORKDIR /docker-opencv-python
RUN mkdir -p /root/.jupyter
RUN cp -f jupyter_config.py /root/.jupyter/
RUN mkdir -p /root/volume

# Make startup run file
WORKDIR /docker-opencv-python
RUN cp -f run.sh /
RUN chmod +x /run.sh
CMD /run.sh

然后执行下面命令构建镜像

docker build -t aggresss/opencv-python .

在10Mbps的网络下大约需要10分钟,构建好镜像后使用 docker images 命令看到构建好的镜像。

2. 运行容器

创建一个目录用于挂载容器的数据

mkdir -p  /data/volume/opencv_python

然后使用下面命令来运行容器

docker run -d \
-p 18881:8888 \
-v /data/volume/opencv_python:/root/volume \
--privileged=true \
--name opencv-python \
aggresss/opencv-python

容器运行后就可以在浏览器中输入 http://ip:18881 来访问Jupyter 服务了,默认密码是: 12345678

也可以使用 docker-compose 的方式启动容器,编写docker-compose.yml 文件如下

version: '2'
services:
  opencv-python:
    image: aggresss/opencv-python
    privileged: true
    command: /run.sh
    ports:
      - "18881:8888"
    volumes:
      - /data/volume/opencv_python:/root/volume

然后使用下面命令运行容器

docker-compose up -d 

3. 共享镜像

  上面所有提到的文件可以在 https://github.com/aggresss/docker-opencv-python 下载,镜像构建好后为了方便分享可以上传到dockerhub上面,或者私有的registry里面。到 www.dockerhub.com 上面注册一个帐号并创建一个与需要上传的镜像同名的repo, 然后在本地使用登录命令

docker login

再使用下面命令将镜像上传

docker push aggresss/opencv-python 

dockerhub同时支持使用github上面的dockerfile自动构建镜像的方式,可以查看dockerhub的文档去了解。

参考文档:

  1. https://docs.docker.com/
  2. https://github.com/aggresss/docker-opencv-python
  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值