Docker打包conda环境+代码并上传至Docker Hub【denied: requested access to the resource is denied】

究极缝合怪!

记录Docker打包conda环境+代码&上传至自己的Docker hub

1、从安装Docker开始

  1. 安装yum工具

    yum install -y yum-utils device-mapper-persistent-data lvm2 --skip-broken

  2. 设置docker镜像源

    yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

    sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

    yum makecache fast

  3. 安装Docker

    yum install -y docker-ce

  4. 先输入:sudo systemctl start docker,再输入:sudo systemctl enable docker

    sudo systemctl start docker

    sudo systemctl enable docker

Docker安装over

2、将Conda项目打包成镜像

  1. 先安装一个miniconda基础的镜像

    docker pull continuumio/miniconda3

  2. 进入容器

    docker run --name test -idt continuumio/miniconda3

    -idt中的 -d 指定容器的运行模式,让docker 服务后台运行。

  3. 查看一下容器列表

    docker ps -a

  4. 进入test容器,查看conda位置

    docker exec -it test /bin/bash

    查看conda位置:conda info --envs

    查看完后接着退出容器:exit

  5. 在本地环境中将本地环境复制到docker中

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

    docker cp /root/miniconda3/envs/你的conda环境 test:/opt/conda/envs

    • /home/b/miniconda3/envs/pipe 是自己需要打包的本地环境
    • test是容器名,/opt/conda是在容器内conda的根目录。
  6. 着再进入容器 查看环境是否复制成功

    docker exec -it test /bin/bash

    conda info --envs

    exit

  7. 在本地环境中将本地代码复制到docker中

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

    docker cp /data/代码路径 test:/root/

    docker exec -it test /bin/bash

    ls /root/

    exit

  8. 将容器保存为镜像

    docker commit -a '你的名字' -m '代码描述' test image_test

    • -a:作者
    • -m:提交的描述信息
    • test:容器名字
    • image_test:保存的镜像的名字
  9. 将镜像存为压缩包【这步可以直接把压缩包给另一个机器,不走docker hub】

    docker save -o test_tar.tar image_test

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

读取镜像【如果是用压缩包的话,就是上面的第9步才看这里】

  1. 将打包好的镜像压缩包拷贝到宿主机上。

  2. cd 到压缩包目录,执行:

    docker load -i test_tar.tar

  3. 用image_test镜像创建一个名为create_test的容器:
    docker run --name create_test -idt image_test

  4. 如果需要容器内文件与容器外文件做映射,则用以下指令创建容器:
    docker run --name create_test -v /home/path:/root/ -idt image_test
    -v 宿主机路径 容器路径:该指令可以在创建容器时宿主机路径映射到容器路径。这样可以在容器内直接访问宿主机的文件夹。

  5. 进入容器:docker exec -it create_test /bin/bash

上传镜像

  1. 登陆Docker Hub :

    用户在 Docker Hub 上完成注册后,创建一个repository。
    在这里插入图片描述

    然后在命令行中进行登陆

    docker login -u <用户名>

    成功显示:Login Succeeded

    退出: docker logout

  2. 给本地镜像打tag

    docker tag 镜像名字和标签

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

    附上删除镜像的命令:docker rmi <image>

  3. 上传镜像

    用户可以通过 docker push 命令,把自己创建的镜像上传到仓库中来共享。

    docker push new-repo:tagname

    这步可能会出现【denied: requested access to the resource is denied】这个问题

    有可能的解决方法是:1、重新login一下 2、确定自己在docker hub创建了repository,然后tag要和创建的repository名一样,可以参考docker hub官网给的提示:在这里插入图片描述
    3、网不好的话多试几次,万一网好了呢

Over!

猜你喜欢

转载自blog.csdn.net/weixin_65656674/article/details/129448811