docker使用

一、tag重命名

docker tag image_id bert_ner:pytorch_cuda_10.0.130

 但是会保留原来的镜像,这时可以使用docker rmi删除原来的镜像

 

 二、根据镜像名创建容器

docker run -it -d --name=service -p 8000:8000 image_id

  -d:表示后台模式创建一个容器

 --name:指定容器名字

 -it:交互模式

三、修改容器中的文件

 正常情况下进入容器,后vi即可,但是容器内没安装vi的话,并且也无法联网安装vi,则需要将容器内文件拷贝出来,vi之后再拷贝进容器

docker cp service: /code/worker/filename .
# service为容器名,后面为需要拷贝出来的文件路径
# 拷贝出来后进行vi
# 然后重新拷贝到容器内
docker cp filename service:/code/worker/processor/utils/

 

四、利用docker创建包含需要python包的python镜像

docker pull python:3.7.4
docker run -it python:3.7.4 /bin/bash
pip install pandas
docker commit your_container new_images:tags # 创建新镜像

 

五、如何保存镜像到本地,然后放到其他服务器上

docker images # 先查看自己需要得镜像ID
docker save -o bert_ner_pytorch_cuda_10.0.130_image.tar REPOSITORY:TAG# 保存的名字自己定,REPOSITORY:TAG是已经存在的镜像

# 保存到本地后,生成的镜像我们可以满地跑啦,带着她远走高飞
docker load < bert_ner_pytorch_cuda_10.0.130.tar
docker images #可以查看自己load上的镜像

# 重命名images
docker tag ner/pytorch:cuda_10.0.130 bert_ner_yh:pytorch_cuda_10.0.130

 

六、docker使用流程

# 有时某个用户无权限使用docker
sudo usermod -G docker user_name

# 手里有某个镜像:名字为Image_File
docker load < Image_File

# 查看自己的镜像,然后创建容器,并进入容器环境
docker images 
docker run -it --name=container_name Image_ID bash

# 假如进入容器后对环境不满意,一顿骚操作后可以重新生成新的镜像
docker commit container_name New_Image:Tags
docker images
# 然后可以保存新的镜像文件
docker save New_Image_ID > Image_File.tar

# 删除原来的垃圾容器和镜像
docker rm -f container_name
docker rmi -f Image_ID

# 已经有了新镜像,我们在某个路径下新建目录,每种模型下面都按data,output,script,service, pre_train_model结构来放置
mkdir -p NLP/Text_Classification/Bert_Base
# 如Bert_Base目录下面放置data,output,script,service, pre_train_model框架

# 有了上面的模型目录结构,我们把NLP挂载到启动的容器下,-v参考挂载,-p参数映射端口,并设置好端口映射,我们先进入NLP目录,然后
# --name指定生成的容器名字
docker run -it --name=model_all -v $PWD:/workspace/NLP/ -v /etc/localtime:/etc/localtime -p 7901:8901 Image_ID /bin/bash
# 进入容器后,我们就发现:/workspace/NLP/Text_Classification/Bert_Base,创建容器后,我们可以像下面方式再进入容器:model_all
docker exec -it model_all bash

 七、Dockerfile解释

FROM tensorflow/tensorflow:1.13.0rc2-gpu-py3

# 指定镜像作者信息,即镜像的Author属性
# LABEL是一个更灵活的版本,可以替代MAINTAINER
LABEL maintainer="yh"

RUN rm /etc/apt/sources.list.d/cuda.list && rm /etc/apt/sources.list.d/nvidia-ml.list

# 升级系统: --assume-yes 忽略提示信息
# -y:在安装软件包时不会出现任何提示
RUN apt-get update && apt-get --assume-yes install -y --no-install-recommends \
        build-essential \
        libsm6 \
        vim \
        && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

RUN pip install --upgrade pip && pip --no-cache-dir install -i https://pypi.tuna.tsinghua.edu.cn/simple tornado keras==2.2.4 bert4keras==0.7.1

RUN mkdir -p /pretrained_models
COPY ./models/chinese_L-12_H-768_A-12 /pretrained_models/chinese_L-12_H-768_A-12
# 设置环境变量
ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-10.0/compat

 

posted @ 2019-10-18 15:00  1直在路上1  阅读(196)  评论(0编辑  收藏  举报