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