• windows 使用docker构建镜像


    1. 使用Dockerfile

    1. 下载docker desktop

    下载docker for windows,这里有个小坑,需要确定是否打开了虚拟化。如果没有,必须重启在BIOS界面打开虚拟化,重启之后就可以启动docker for windows了。

    2. 更改工作目录

    一定要注意:先改下docker desktop的setting。不然生成镜像直接爆炸,全都放到C盘。

    在这里插入图片描述

    3. 使用Dockerfile 构建镜像

    打开cmd,到Dockerfile的路径(请把dockerfile单独放到一个目录)。
    使用

    docker build -t image_name .
    
    • 1

    这个 “.” 就是当前目录,然后就是漫长的等待。
    在这里插入图片描述

    2. 如何写dockerfile?

    创建一个基于某镜像的容器:

    docker run -it nvidia/cuda:9.2-cudnn7-devel-ubuntu16.04 /bin/bash
    
    • 1

    然后调试,调试,调试好了commit,注意user/xxx与你的dockerhub新建的仓库名一致。

     docker commit  a404c6c174a2  user/xxx:v1 
    
    • 1

    然后登陆docker

     docker login
    
    • 1

    push 到自己仓库

    docker push user/xxx:v1 
    
    • 1

    之后dockerfile就可以简单的写上一句,就把整个调试好的环境下载下来了。

    FROM user/xxx:v1 
    
    • 1

    4.上传到阿里云

    https://cr.console.aliyun.com/cn-hangzhou/instance/repositories

    5. 附录、docker常用命令

    创建一个基于某镜像的容器:

    docker run -it nvidia/cuda:9.2-cudnn7-devel-ubuntu16.04 /bin/bash
    
    • 1

    如果要挂载目录的话:(通过-v参数,冒号前为宿主机目录,必须为绝对路径,冒号后为镜像内挂载的路径。)

    docker run -it -v path1:path2 nvidia/cuda:9.2-cudnn7-devel-ubuntu16.04 /bin/bash
    
    • 1

    查看正在运行的容器:

    docker container ls 
    
    • 1

    查看所有的的容器(不管有没有运行):

    docker ps -a
    
    • 1

    进入容器(容器不停止)

    docker exec -it [containerID] /bin/bash
    
    • 1

    删除容器:(先终止,才能删除)

    docker container rm [containerID]
    
    • 1

    终止 容器:

    docker stop [containerID]
    
    • 1

    查看容器大小

    docker system df
    
    • 1

    查看每个容器大小

    docker system df -v
    
    • 1

    6. 使用调用nVidia gpu的docker

    nvidia-docker 代替 docker 命令

    基于某个image 开一个容器
    (通过-v参数,冒号前为宿主机目录,必须为绝对路径,冒号后为镜像内挂载的路径。)

    nvidia-docker run -it --shm-size="16g" -v /home/limx/Workspace:/home/limx/Workspace limx/torch1.5_cuda10.1_uss /bin/bash
    
    • 1

    进入容器(容器不停止)

    nvidia-docker exec -it [containerID] /bin/bash
    
    • 1

    7. 使用pycharm对容器进行debug

    加入-p参数

    nvidia-docker run -it --shm-size="16g" -v /disk4/limx:/disk4/limx -p 22:8080 limx/torch1.5_cuda10.1_uss /bin/bash
    
    • 1

    docker 调试时候加环境变量

    vim ~/.bashrc
    source ~/.bashrc

    常见错误

    Failed to initialize NVML: Unknown Error

    突然发现nvcc和nvidia-smi显示的版本不一致,看到了下面的博文,实际上我们参考的cuda版本还是根据runtime。
    参考https://www.jianshu.com/p/eb5335708f2a

    实际上最后加了一个--privileged 就好了。

    sudo docker run -it --shm-size="16g"  -v /data/limingxing.lmx/:/home/limx --privileged  reg.docker.xxx /bin/bash
    
    • 1

    dockerfile 书写错误

    错误
    /bin/sh: 1: RUN: not found

    原因
    RUN 语句之间不是 && 连接。
    所以可以只写一个RUN,

    参考网址

    https://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html
    https://www.runoob.com/docker/docker-tutorial.html

  • 相关阅读:
    c++中的异常处理
    Jenkins CVE-2017-1000353远程代码执行漏洞复现
    java中判断是不是数字
    【LeetCode与《代码随想录》】贪心算法篇:做题笔记与总结-JavaScript版
    PAT甲级打卡-1005-1010
    【Method】把 arXiv论文 转换为 HTML5 网页
    Java 使用Reactive Redis
    VVC码率控制中的质量依赖因子QDF
    消息监听器和消息监听容器
    问题:如果要编辑建好的建筑和空间,需要在分级按钮( )和细分操作按钮楼层下,才能选中建筑物和空间; #微信#媒体#其他
  • 原文地址:https://blog.csdn.net/m0_67402013/article/details/126552175