【docker&python】亲测有效!适合新手!docker创建conda镜像+容器使用(挂载、端口映射、gpu使用)+云镜像仓库教程

文章目录

  • docker基本概念简介
  • 配置镜像加速源
  • 创建conda镜像
  • 1. 写 Dockerfile文件
  • 2. 创建镜像
  • 3. 创建容器并测试
  • 容器的使用
  • 1. wsl挂载
  • 2. 端口映射
  • 3. 补充-gpu
  • 云镜像仓库使用
  • 1. 登录
  • 2. 将本地镜像上传至云镜像仓库
  • 3. 从云镜像仓库下载镜像到本地
  • docker基本概念简介

    简单来讲,docker可以理解为一个虚拟机,里面用来存放运行程序所需要的环境(各种包)

    docker里面有三个基本概念:镜像、容器和仓库:镜像和容器的关系,其实类似于类和对象的关系(镜像就是模板,容器则是从镜像实例化出的一个实例);而云仓库存的是镜像!

    💡 环境配置流程大概如下:

  • 先把自己本地环境打包成docker file,然后上传到仓库;
  • 然后再从仓库下载镜像文件到Linux服务器;
  • 将下载下来的镜像文件实例化成容器;
  • 最后,运行容器即可!
  • 配置镜像加速源

    如果不配置镜像加速源的话,下载一些基础镜像的时候会失败!所以这步必须配置!

    (之前也是尝试了很多的命令行方法都没有成功,猜测因为wsl依赖于docker desktop的配置)

    "registry-mirrors": [
       "https://inhj05a1.mirror.aliyuncs.com"
     ]
    

    创建conda镜像

    1. 写 Dockerfile文件

    FROM continuumio/miniconda3 AS base
    WORKDIR /yhy
    
    ENV PATH /opt/conda/envs/yhy/bin:$PATH
    
    RUN conda create --name yhy python=3.9 \
        && /bin/bash -c "source activate yhy" \
        && echo "conda activate yhy" >> ~/.bashrc \
        && pip install -i https://pypi.tuna.tsinghua.edu.cn/simple \
        uvicorn fastapi torch loguru pydantic langchain vllm
    

    2. 创建镜像

    docker build -t yhy_conda -f Dockerfile .
    

    镜像创建过程:

  • 激活虚拟环境ing…
  • 下载各种包ing…
  • 3. 创建容器并测试

    如下,执行创建容器并进入容器命令,从yhy_conda镜像中创建了一个名为yhy_conda_test的容器:

    docker run -it --name yhy_conda_test yhy_conda:latest /bin/bash
    

    执行pip list,可以发现包都已安装成功。

    容器的使用

    1. wsl挂载

    以上过程中已经成功创建了conda镜像以及其实例化出的容器,我们可以在容器这个虚拟环境中运行python程序了,但是容器中东西是空的,并没有代码,直接的想法是和宿主机共享代码文件等资源,这里就需要用到挂载了。

    挂载即:将宿主机的目录挂载到docker容器指定目录里,这样每次宿主机的目录修改了,这种修改会同步到对应的docker容器指定目录,从而实现文件的共享!

  • 挂载命令:如下,将宿主机上的/mnt/e/job_document/AICode 挂载到docker的/yhy/AICode
  • docker run -it --privileged=true -v /mnt/e/job_document/AICode:/yhy/AICode yhy_conda 
    

    如下,可以发现已经挂载成功。

    2. 端口映射

    有时我们希望宿主机访问docker容器里的服务,但是docker容器的ip地址是随机分配的、变化的,外界并不能访问到,因此如果想要宿主机和docker容器通信,就要用到端口映射

    端口映射即:宿主机和docker共享ip地址,将docker的xx端口映射到宿主机的xx端口,这样在宿主机中通过宿主机ip地址(或127.0.0.1)就能访问到docker容器里的服务!

  • 端口映射命令:将docker的12311端口映射到宿主机的80端口
  • docker run --gpus all -it --name yhy_container -p 80:12311 --privileged=true -v /mnt/e/job_doc
    ument/AICode:/yhy/AICode yhy_conda 
    
  • docker中为12311端口
  • 宿主机用80端口访问成功!
  • 3. 补充-gpu

    如果想要在docker中使用宿主主机的GPU,则需要加上–gpus all参数。(如果失败,可能是没有安装nvidia-docker,官网或网上都有教程)

  • 运行容器时,加上–gpus all!
  • docker run --gpus all -it --privileged=true -v /mnt/e/job_document/AICode:/yhy/AIC
    ode yhy_conda
    

    云镜像仓库使用

    1. 登录

    docker login
    

    然后输入自己的用户名和密码!

    2. 将本地镜像上传至云镜像仓库

    docker tag yhy_conda cis-hub-dongguan-1.cmecloud.cn/mcloud-ai/yhy_conda
    docker push cis-hub-dongguan-1.cmecloud.cn/mcloud-ai/yhy_conda
    

    3. 从云镜像仓库下载镜像到本地

    docker pull cis-hub-dongguan-1.cmecloud.cn/mcloud-ai/yhy_conda
    

    作者:波点兔

    物联沃分享整理
    物联沃-IOTWORD物联网 » 【docker&python】亲测有效!适合新手!docker创建conda镜像+容器使用(挂载、端口映射、gpu使用)+云镜像仓库教程

    发表回复