对开发和运维人员来讲,可能最求之不得的就是一次性地建立或配置,能够在任意环境、任意时间让应用正常运行。而Docker偏偏是能够实现这一终极目标的瑞士军刀。python
具体来讲,Docker在开发和运维过程当中,具备以下几个方面的优点。linux
1.更快速的交付和部署。使用Docker,开发人员可使用镜像来快速构建一套标准的开发环境;开发完成以后,测试和运维人员可使用相同环境来部署代码。Docker能够建立和删除容器,实现快速迭代,大量节约开发、测试、部署的时间。而且,各个步骤都有明确的配置和操做,整个过程全程可见,使团队更容易理解应用建立和工做的过程。docker
2.更高效的资源利用。Docker 容器的运行不须要额外的虚拟化管理程序支持,它是内核级的虚拟化,能够实现更高的性能,同时对资源的额外需求很低。ubuntu
3.更轻松的迁移和扩展。Docker 容器几乎能够在任意的平台运行,包括物理机、虚拟机、公有云、私有云、我的电脑、服务器等。这种兼容性让用户能够在不一样平台之间轻松迁移应用。bash
4.更简单的更新管理。使用Dockerfile,只须要小小的配置修改,就能够替代以往大量的更新工做。而且全部修改均可以以增量的方式进行分发和更新,从而实现自动化而且高效的容器管理。服务器
基于Docker以上优势,咱们来搭建Docker的facenet环境运维
Facenet简介性能
Facenet是一个基于Tensorflow实现的人脸识别器,其核心思想来自于论文:“FaceNet: A Unified Embedding for Face Recognition and Clustering”。此篇博客主要介绍如何用在Docker容器中搭建Facenrt环境。测试
在Docker容器中运行Facenetspa
Ubuntu 系列安装 Docker
要安装最新的Docker版本,首先须要安装apt-transport-https支持,以后通过添加源来安装。
$sudo apt-get install apt-transport-https
$sudo apt -key adv--key server hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
$sudo bash -c "echo deb https://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list"
docker pull python:3.5
2.经过命令sudo docker images 查看安装结果,以下图:
3. 经过镜像python:3.5建立一个facenet容器,参考代码以下:
sudo docker run --name='docker_facenet' -dit python:3.5 /bin/bash
4.经过命令sudo docker ps -a 查看容器,以下图:
5.经过sudo docker attach docker_facenet进入容器,以下图:
6.在Docker容器内安装各类运行Facenet须要的包。(同在本机上安装的那些包),参考代码以下:
pip install --upgrade tensorflow_gpu==1.7
pip install --upgrade numpy==1.16.2 pip install scipy==1.2.1 pip install scikit-learn pip install opencv-python pip install h5py pip install matplotlib pip install Pillow pip install requests pip install psutil
7.复制本地数据和代码到容器,参考指令以下:
docker cp /home/ubuntu/Lwh/data/3D-Face-BMP_blur_datagen.zip docker_facenet:/lwh/facenet-master/src/align/datasets
8.复制容器文件到本地宿主机,参考指令以下:
docker cp docker_facenet:/lwh/facenet-master /home/ubuntu/Lwh/nvidia-docker-facenet
9.运行各类Facenet程序,此时与在本机运行相似。需注意此时各个文件的路径是在docker的文件系统中的路径
10.以上安装方法比较繁琐,后续更新Dockerfile更新方式