【docker】常用操作总结

1.在根目录下创建文件:Dockerfile

FROM python:3.7.4
COPY . /app
WORKDIR /app
RUN pip install --no-cache-dir -r requirements.txt
#CMD [ "python", "name_ner.py" ]
  1. FROM baturayo/tensorflow2.1.0-py3.7.7
    可以在:hub.docker.com 下载基础镜像,比如包含TensorFlow2.1的镜像。
    在这里插入图片描述
    复制pull后面的代码:
    在这里插入图片描述

  2. RUN pip install -r requirements.txt
    运行根目录下的requirements,安装环境。
    pip freeze >requirements.txt 将当前项目的环境导入到根目录的requirements.txt中
    在这里插入图片描述

2.创建docker镜像

在项目的根目录下输入:docker build -t name_ner .

name_ner是docker镜像的名称
在这里插入图片描述
输入:docker images 查看已创建的镜像
在这里插入图片描述

3.容器测试运行

  1. 创建容器
    docker run -dit -p 6002:6002 --name ner name_ner:latest /bin/bash
    容器名:ner
  2. 启动容器
    docker start ner
  3. 进入容器
    docker attach ner
  4. 运行代码
    python name_ner.py

4.修改容器中的代码

  1. 将代码从外部拷贝到容器中替换原有的代码
    docker cp /home/chenxin/main.py ner:/ “ner:/app/” 为容器的根目录
  2. 使用vi命令直接修改文件,需要安装vi包
  3. 使用挂载的方式

5.创建基础镜像

如果在工作中不同环境的包大部分是相同的,仅少数几个包不同,那么可以创建一个基础镜像,遇到不同的环境可以基于基础镜像安装少数几个包即可,可以省去大量安装包的时间。
基础镜像只有环境,无需创建app目录,Dockerfile内容:

FROM python:3.7.4  
RUN pip install --no-cache-dir -r requirements.txt

6.基于基础镜像创建新的镜像

Dockerfile内容:

FROM nlp_base:latest
COPY . /app
WORKDIR /app  
RUN pip install --no-cache-dir -r requirements.txt

"nlp_base"为镜像名称,"latest"为标签号,requirements.txt 中只需将本环境与基础镜像环境不同包的版本列出即可。

7.删除镜像

docker rmi 6f577458a64d

“6f577458a64d”为IMAGE ID
在这里插入图片描述
运行后出现:
在这里插入图片描述
停止使用该镜像的容器:

docker stop c7b485f637e6

删除该容器:

docker rm c7b485f637e6

再删除镜像:

docker rmi 6f577458a64d
在这里插入图片描述

8. 保存和加载镜像

8.1 保存镜像

命令:

docker save -o image_saved_name.tar repository_name/tag

-o: 输出到的文件。

8.2 加载镜像

命令:

docker load -i image_saved_name.tar

9. 问题解决

9.1 docker permission denied解决

  1. 用户加入到docker用户组:
sudo usermod -aG docker username
  1. 给docker.sock添加权限:
sudo chmod a+rw /var/run/docker.sock

9.2 container的修改保存到image

docker commit 将 container中的修改生成image:

docker commit container_id/name repository:tag

9.3 docker内nvidia-smi无法使用

  1. 创建容器时加入–gpus:
docker run --gpus all -it --rm image_name

解释

  • –gpus all:允许容器访问所有可用的 GPU。
  • -it:以交互模式运行容器。
  • –rm:容器在退出后自动删除。
  • -d: 以后台模式运行容器(detached mode)。这意味着容器启动后,命令行会立即返回,而不是在容器的终端中保持打开状态。

若报错:

docker: Error response from daemon: exec: "nvidia-container-runtime-hook": executable file not found in $PATH.

sudo apt install安装下面依赖包:

libnvidia-container1
libnvidia-container-tools
nvidia-container-toolkit
nvidia-container-runtime
nvidia-docker2  # 非必须
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值