文章目录
- 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