美文网首页深度学习
docker的基本概念和Nvidia-docker镜像

docker的基本概念和Nvidia-docker镜像

作者: 嗮太阳的狗狗 | 来源:发表于2018-02-22 14:39 被阅读9935次

    本文主要介绍docker的基本概念和原理,分为:

    1.docker是什么

    2.docker架构

    3.docker基本操作

    4.Nvidia-docker镜像

    1.什么是docker?

    Docker 是一个开源的应用容器引擎,基于 GO语言并遵从Apache2.0协议开源。

    Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,可以实现虚拟化。

    Docker所代表的容器虚拟化技术属于操作系统级虚拟化:内核通过创建多个虚拟的操作系统实例(内核和库)来隔离不同的进程。并且传统虚拟化技术是在硬件层面实现虚拟化,增加了系统调用链路的环节,有性能损耗;容器虚拟化技术以共享Kernel的方式实现,几乎没有性能损耗。

    这里可以将容器理解为一种沙盒。每个容器内运行一个应用,不同的容器相互隔离,容器之间可以建立通信机制。容器的创建和停止都十分快速(秒级),容器自身对资源的需求十分有限,远比虚拟机本身占用的资源少

    应用场景:

    Web 应用的自动化打包和发布。

    自动化测试和持续集成、发布。

    在服务型环境中部署和调整数据库或其他的后台应用

    。。。

    优点:

    简化程序:

    Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化。Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放入Docker中进行管理。方便快捷已经是 Docker的最大优势,过去需要用数天乃至数周的任务,在Docker容器的处理下,只需要数秒就能完成。

    快速部署:

    Docker 镜像中包含了运行环境和配置,所以 Docker 可以简化部署多种应用实例工作。比如 Web 应用、后台应用、数据库应用、大数据应用比、消息队列等等都可以打包成一个镜像部署。 

    节省开支:

    一方面,云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker 改变了高性能必然高价格的思维定势。Docker 与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式。

    2.docker架构

    Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器;

    Docker 容器通过 Docker 镜像来创建;

    这里容器与镜像的关系类似于面向对象编程中的对象与类的关系;

    docker简单架构图如下:

    docker架构一些概念介绍:

    3.docker 基本操作

    http://www.runoob.com/docker/docker-command-manual.html

    4.模型训练和评价系统中docker的安装和使用

    a.docker安装

    安装官方docker

    sudo apt-get -y install apt-transport-https ca-certificates curl  

    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -    

    sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

    sudo apt-get update

    sudo apt-get -y install docker-ce

    b.安装nvidia-docker

    # If you have nvidia-docker 1.0 installed: we need to remove it and all existing GPU containersdocker volume ls -q -f driver=nvidia-docker | xargs -r -I{} -n1 docker ps -q -a -f volume={} | xargs -r docker rm -f

    sudo apt-get purge -y nvidia-docker# Add the package repositoriescurl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -

    curl -s -L https://nvidia.github.io/nvidia-docker/ubuntu16.04/amd64/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

    sudo apt-get update# Install nvidia-docker2 and reload the Docker daemon configurationsudo apt-get install -y nvidia-docker2

    sudo pkill -SIGHUP dockerd

    c. 安装ubuntu,配置caffe所需环境

    sudo nvidia-docker search ubuntu

    sudo nvidia-docker pull ubuntu

    配置caffe所需环境

    .....

    注意:镜像中的显卡驱动需要与宿主机镜像驱动一致

    到此,镜像安装完成,但是存在一个问题,有些模型运行需要指定运行环境,如果直接在容器中修改系统配置文件的话,就不能使用脚本运行程序,只能使用命令,因此需要在打包镜像的时候使用dockerfile指定需要的环境变量

    d.使用dockerfile生成镜像

    生成镜像的两种方法:dockerfile创建和手动创建

    Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。它们简化了从头到尾的流程并极大的简化了部署工作。Dockerfile从FROM命令开始,紧接着跟随者各种方法,命令和参数。其产出为一个新的可以用于创建容器的镜像,类似于makefile

    具体参考各种命令

    https://www.cnblogs.com/boshen-hzb/p/6400272.html

    本文使用的dockerfile文件如下:

    FROM laika/ubuntu:base_image

    LABEL maintainer 'wanghq'

    ENV PYTHONPATH=‘/install_src/pyfaster-rcnn/python’

    运行:sudo docker build -t "ubuntu:V1"

    e.启动容器

    sudo nvidia-docker run -it--privileged=true--name=wanghq ubuntu:V1 /bin/bash

    注意:此处必须添加--privileged=true使得容器真正获取主机硬件资源,包括GPU显卡资源

    相关文章

      网友评论

        本文标题:docker的基本概念和Nvidia-docker镜像

        本文链接:https://www.haomeiwen.com/subject/jhqztftx.html