1、将宿主机上python环境保存到requirements.txt pip3 freeze >requirements.txt 2、新建sources.list文件(apt的源文件) sources.list具体内容如下: $ vi sources.list deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties deb http://mirrors.aliyun.com/ubuntu/ xenial universe deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties deb http://archive.canonical.com/ubuntu xenial partner deb-src http://archive.canonical.com/ubuntu xenial partner deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse 3、准备Dockerfile文件 # 指定所创建镜像的基础镜像 FROM nvidia/cuda:9.0-cudnn7-devel LABEL author="gtmap" #用ubuntu国内源替换默认源 RUN rm /etc/apt/sources.list COPY sources.list /etc/apt/sources.list WORKDIR /work_path //docker环境中工作路径 ADD . /workpath //将文件拷贝到docker中的文件夹下 RUN sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list #RUN sed -i s@/http/@/https/@g /etc/apt/sources.list.d/cuda.list #RUN sed -i s@/http/@/https/@g /etc/apt/sources.list.d/nvidia-ml.list RUN sed -i s@/http/@/https/@g /etc/apt/sources.list RUN sed -i s@/developer.download.nvidia.com/@/developer.download.nvidia.cn/@g /etc/apt/sources.list.d/cuda.list RUN echo > /etc/apt/sources.list.d/nvidia-ml.list RUN echo > /etc/apt/sources.list.d/cuda.list RUN apt-get update && apt-get install wget #安装python RUN apt-get update --fix-missing && apt-get install vim python3-pip python3-dev python-opencv python3-tk libjpeg-dev libfreetype6 libfreetype6-dev zlib1g-dev cmake cython git libxml2 libxml2-dev libcups2-dev -y # 更新pip RUN python3 -m pip install --upgrade pip -i https://pypi.douban.com/simple # 安装python依赖库 RUN python3 -m pip install -r requirements.txt -i https://pypi.douban.com/simple(这一步可以先不执行,再创建好镜像之后,再在镜像中安装) # Add CUDA to the path ENV PATH $PATH:/usr/local/cuda/bin ENV LD_LIBRARY_PATH $LD_LIBRARY_PATH:/usr/local/cuda/lib64 ENV CUDA_HOME /usr/local/cuda RUN ldconfig # 设置docker容器中编码格式 ENV LANG C.UTF-8 # 声明镜像内服务监听的端口 EXPOSE 8888 # CMD为启动镜像后执行的脚本 CMD ["python", "manage.py"] 4、创建docker镜像文件 docker build -t hello . //-t 镜像名称 -f dockerfile文件路径 .代表Dockerfile在当前路径下 5、启动docker镜像文件 docker run -it -p 8888:8888 hello // 守护模式启动镜像hello 6、修改后保存镜像 docker commit -m "" -a "" 容器id 镜像源:版本 说明:-m 提交的说明 -a 提交的用户 举例: docker commit -m '修改代码' -a 'gtmap' cb016b4263b6 target_identification:v2 7、保存镜像为tar包 docker save target_identification:v2 -o ./target_identification.tar