Docker 一安装及python环境打包

Docker 一安装及python环境打包

docker介绍

docker 快速入门_docker镜像和容器的区别_kangshuangzhu的博客-CSDN博客

Docker 封装anaconda环境,生成镜像并打包,纯小白一文读懂(一)_glibc_2.29 not found_豆蔻二八的博客-CSDN博客

参考

【全面详细】Windows10 Docker安装详细教程 - 知乎 (zhihu.com)

Docker 封装anaconda环境,生成镜像并打包,纯小白一文读懂(二)_anaconda docker_豆蔻二八的博客-CSDN博客

Docker极简实战之python项目安装部署 - 知乎 (zhihu.com)

【深度学习】将Anconda中的虚拟环境制作成Docker镜像_秦乐乐的博客-CSDN博客

【云原生-Docker】docker镜像制作、上传、dockerfile命令解析_docker上传文件命令_rundreamsFly的博客-CSDN博客

内容

1 安装Docker

1 在 Windows 10 上安装 Hyper-V

不需要这一步

在 Windows 10 上启用 Hyper-V | Microsoft Learn

2 在 Windows 10 上安装 WSL2

安装 WSL | Microsoft Learn

3 安装docker

【全面详细】Windows10 Docker安装详细教程 - 知乎 (zhihu.com)

4 安装路径的修改

[基于windows WSL安装Docker Desktop,修改默认安装到C盘及默认下载镜像到C盘 - 腾讯云开发者社区-腾讯云 (tencent.com)](https://cloud.tencent.com/developer/article/2127691#:~:text=修改默认安装到C盘 1 删除如下目录C%3A\Program Files\ Docker 2 在D盘新建目录:D%3A\Program Files\Docker,%2Fj "C%3A\Program Files\Docker" "D%3A\Program Files\Docker" 5 执行下载的安装程序,即可将Docker Desktop安装到D盘了)

更改完之后要在系统环境变量中进行配置

5 配置加速

     "registry-mirrors": [
               "https://kfwkfulq.mirror.aliyuncs.com",
               "https://2lqq34jg.mirror.aliyuncs.com",
               "https://pee6w651.mirror.aliyuncs.com",
               "https://registry.docker-cn.com",
               "http://hub-mirror.c.163.com",
               "https://7v36ec11.mirror.aliyuncs.com"
                ],
      "dns": ["8.8.8.8","8.8.4.4"]

2 拉取镜像 创建容器

5 在docker环境下 拉取 anaconda

https://docs.anaconda.com/anaconda/user-guide/tasks/docker/

continuumio/anaconda3 镜像是docker镜像库中star数最高的镜像

docker pull continuumio/anaconda3

用 docker images 指令 查看是否拉取成功。

6 用continuumio/anaconda3镜像创建一个名为test的容器

docker run --name test -idt continuumio/anaconda3

-idt中的 -d 指定容器的运行模式,可以使docker 的服务是在后台运行。但加了 -d 参数默认不会进入容器,想要进入容器需要使用指令 docker exec(下面会介绍到)

执行完该指令后再查看一下容器列表(docker ps -a),发现有名为test的新容器被创建,容器一被创建就自动运行。

3 本地环境复制到docker中

7 复制环境

思路1 anaconda 导出环境

1.1将自己的conda虚拟环境导出成environment.yml

你需要先conda activate 环境,先进入你想要导出的环境,然后执行命令:

conda env export > environment.yml

1.2 将环境文件复制

进入所在复制的文件夹 ,对文件进行复制

docker cp 

1.3在docker环境中根据 environment.yml 创建环境

conda env create -f environment.yml

思路2 直接将环境文件夹复制过去

2.1 进入test容器,查看conda位置

docker exec -it test /bin/bash

用exec进入容器,在使用快捷键退出容器时,不会停止容器。

在test容器内查看容器内的anaconda的位置

whereis anaconda
#或者使用
conda info --envs

查看完后接着退出容器:

#快捷键
Ctrl+d

在容器内部,conda的路径是/opt/conda

2.2 在本地环境中将需要打包的环境复制到docker中

在本地环境中将需要打包的本地复制到docker中:

docker cp /Anaconda3/envs/DBRL  test:/opt/conda/envs

其中 : /home/b/miniconda3/envs/yolo1.7 是自己需要打包的本地环境, test是容器名,/opt/conda是在容器内使用 conda info --envs 查看到的根目录。

接着再进入容器 查看环境是否复制成功(然后再退出容器):

docker exec -it test /bin/bash
conda info --envs

4 本地代码复制到docker中

退出容器后,在本地环境中将需要打包的代码复制到docker中:

 docker cp /home/b/.../tools test:/root/

将本地文件 /home/b/…/tools 复制到test容器的根目录下。

●容器内查看复制结果并退出容器:

ls /root/

到此为止,该test容器中已经包含我们所需的代码和环境,可以对其进行打包。

5 保存镜像

docker commit

 docker commit -a 'author' -m 'instruction' test image_test

其中“author"为作者 "instruction" 为描述 test :容器名字 image_test:保存的镜像的名字。

查看镜像 ,可以看到已经生成了名为image_test的新镜像:

docker images

思路1 将镜像存为压缩包

1.1 cd到一个指定目录,以便于查找保存的压缩包。

1.2 压缩: save

 docker save -o test_tar.tar image_test

test_tar.tar: 压缩包名称 , image_test: 镜像名称。

1.3在该目录下,可以查看到生成的名为test_tar.tar的压缩包:

到此为止,本地的conda环境便打包完成。

思路2 将镜像上传

三分钟Docker-推送本地镜像到仓库 - 腾讯云开发者社区-腾讯云 (tencent.com)

2.1 dockerHub账号申请,验证邮箱 创建个人resp

https://hub.docker.com/

2.2 在操作之前执行登录命令

docker login

2.2 上传 push

docker tag local-image:tagname new-repo:tagname
docker push new-repo:tagname

tag 后面的是你要上传的本地镜像

new_repo 是远程私人仓库 账号名称/仓库名

docker  tag image_test:latest   zuti666/testcondadbrl1:test

image_test(本地想要上传的镜像):latest(镜像的tag)

zuti666/testcondadbrl1 (是远程私人仓库 账号名称/仓库名) :test (起的新的镜像名)

docker push   zuti666/testcondadbrl1:test

2.2 或者在windows docker的图像化界面直接将镜像push

6 镜像加载

思路1 使用压缩包

在宿主机上执行:
●将打包好的镜像压缩包拷贝到宿主机上。
●cd 到压缩包目录,执行:

docker load -i test_tar.tar

查看是否读取成功,可发现已经生成了一个名为image_test 的新镜像:

用image_test镜像创建一个名为create_test的容器:

docker run --name creat_test -idt image_test

PS:若创建容器时需要对容器内文件与容器外文件做映射,则需要执行以下指令:

docker run --name creat_test -v /home/b/hxb:/root/hxb -idt image_test

-v /home/b/hxb:/root/hxb:该指令可以在创建容器时将容器外的 /home/b/hxb 目录映射到容器内的 /root/hxb 目录。这样可以在容器内直接访问容器外的 /home/b/hxb 文件夹。

●进入容器内便可发现已经将环境与代码全部打包过来了:

思路2

使用pull 拉取

docker使用常见操作

Docker 命令大全 | 菜鸟教程 (runoob.com)

posted @ 2023-03-30 21:06  英飞  阅读(2201)  评论(0编辑  收藏  举报