美文网首页
note - 通过Dockerfile创建docker imag

note - 通过Dockerfile创建docker imag

作者: 汉江岳 | 来源:发表于2019-12-27 16:27 被阅读0次

    掌握思想是最重要的

    可以通过面向对象的思想来理解docker,在docker中image可以看作是类,container可以看作是对象。
    类可以继承和修改(自定义),docker image亦如此,类的定义,对应Dockerfile, 举例说明:
    创建一个pytorch开发环境(docker image)
    Dockerfile

    # use docker image as an python develop environment
    # image env: ubuntu:16.04+cuda:9.0+git + tree + vim + python3.7+ anaconda3 + pytorch1.3
    
    # inherit from nvidia/cuda official image from docker hub
    # The machine running the CUDA container only requires the NVIDIA driver, 
    # the CUDA toolkit doesn't have to be installed.
    # choose runtime nvidia/cuda image(include cuda toolkit) is ok. 
    FROM nvidia/cuda:10.1-runtime-ubuntu16.04
    
    # image creator
    MAINTAINER xxx <xxx@163.com>
    
    # bash command pipeline
    RUN apt-get update
    RUN apt-get install -y wget
    RUN apt-get install -y bzip2
    RUN apt-get install -y python3-dev
    RUN apt-get install -y libevent-dev
    RUN apt-get install -y gcc
    RUN apt-get install -y g++
    RUN apt-get install -y vim
    RUN apt-get install -y tree
    RUN apt-get update
    
    # install Anaconda3
    RUN wget https://repo.anaconda.com/archive/Anaconda3-2019.03-Linux-x86_64.sh -O ~/anaconda3.sh
    RUN bash ~/anaconda3.sh -b -p /home/anaconda3 \
        && rm ~/anaconda3.sh 
    ENV PATH /home/anaconda3/bin:$PATH
    
    # install pytorch
    RUN conda install pytorch torchvision cudatoolkit=10.1 -c pytorch -y
    
    RUN pip install numpy
    RUN pip install tqdm
    

    build image

    cd ~
    mkdir dockerfile # 最好单独新建一个文件夹,不然可能报错
    cp /path/to/Dockerfile ~/dockerfile # 把写好的Dockerfile 复制到~/dockerfile文件夹下
    
    cd ~/dockerfile
    docker build -t imgae_name:image_version .
    

    通过这个例子可以看出,Dockerfile实际上是结合了 面向对象思想 和 shell脚本 的思想,把类的继承和一连串命令行操作串起来,实现自动化创建虚拟开发环境。

    另外:继承自nvidia/cuda官方的image比较规范,干净,环境默认encoding就是utf-8,建议继承自官方镜像(ubuntu、nvidia等),然后自己再安装一些需要的软件/库。

    补充:


    image.png

    对根据上图对docker的原理举一个例子来说明:

    infrastructure: 1机8卡   NVIDIA-driver=384.130
    host OS: ubuntu 14.04
    docker 权限:root
    
    image.png
    image.png

    此时,cuda toolkit 最多安装到8.0,因为cuda toolkit 9.0没有针对ubuntu14.04的版本,虽然cuda driver 384.130 可以支持cuda toolkit 9.0
    这时,docker的巧妙之处就体现出来了,可以创建一个包含ubuntu 16.04的image,这样就可以安装cuda toolkit 9.0 版本了。
    因为docker 可以创建一个包含不同的操作系统的镜像,这个和虚拟机的意味就有点接近了。

    参考:
    NVIDIA/CUDA官方说明:https://github.com/NVIDIA/nvidia-docker/wiki/CUDA
    非常简洁的一个Dockerfile编写说明:https://blog.csdn.net/yageeart/article/details/51547919

    相关文章

      网友评论

          本文标题:note - 通过Dockerfile创建docker imag

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