ToB企服应用市场:ToB评测及商务社交产业平台

标题: 【已办理】docker安装、换源及使用 docker: Get https://registry-1.docker [打印本页]

作者: 种地    时间: 2024-11-15 15:54
标题: 【已办理】docker安装、换源及使用 docker: Get https://registry-1.docker

前言

按照gpt给的流程安装docker,到docker run hello-world

时不绝失败,试了一下直接拉取docker资源docker pull xxx 还是不可,看了一下别的帖子都说需要换源,但很多docker源都失效了,为了方便后续自己再安装换源记录一下,只想看怎么换源的可以直接跳到第2部分

一、docker 安装

以下步骤由gpt生成,亲测步骤10之前都没题目
1: 更新体系包
首先,打开终端并更新你的包索引:
  1. sudo apt update
  2. sudo apt upgrade -y
复制代码
2: 安装必要的依赖
安装一些必要的包,以便让 apt 能够通过 HTTPS 使用仓库:
  1. sudo apt install apt-transport-https ca-certificates curl software-properties-common -y
复制代码
3: 添加 Docker 的官方 GPG 密钥
运行以下下令来添加 Docker 的 GPG 密钥:
  1. curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
复制代码
4: 添加 Docker 的 APT 仓库
添加 Docker 的稳定版仓库:
  1. sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
复制代码
5: 更新包索引
再次更新包索引以包罗 Docker 的软件包:
  1. sudo apt update
复制代码
6: 安装 Docker
如今,你可以安装 Docker:
  1. sudo apt install docker-ce -y
复制代码
7: 启动 Docker 服务
确保 Docker 服务正在运行:
  1. sudo systemctl start docker
  2. sudo systemctl enable docker
复制代码
8: 验证 Docker 是否安装成功
你可以通过以下下令检查 Docker 是否安装成功:
  1. sudo docker --version
复制代码
9: 以非 root 用户运行 Docker(可选)
如果你希望以非 root 用户运行 Docker,可以将当前用户添加到 docker 组:
  1. sudo usermod -aG docker $USER
复制代码
使用以下下令立即应用更改:
  1. newgrp docker
复制代码
!!!!!注意:这种方式单次有效,下次再运行docker还是必须用sudo
想永久有效的方式是在输入sudo usermod -aG docker $USER
指令后立即输入sudo reboot对体系进行重启!!!

重启之后打开终端验证是否设置成功,输出中应当包罗docker:
  1. groups $USER
复制代码
10: 测试 Docker
运行以下下令来测试 Docker 是否工作正常:
  1. docker run hello-world
复制代码

二 、docker pull 失败,提示timeout

重要是网络题目,需要换源
1. 打开/新建/etc/docker/daemon.json文件

  1. sudo nano /etc/docker/daemon.json
复制代码
2. 将最新的docker源地址粘贴进去,并将更改后的文件保存

  1. { "registry-mirrors": [ "https://dockerpull.com" ] }
复制代码
Ctrl + O保存,Enter确认保存,Ctrl + X退出nano
注意:由于docker源常常更新,请自行检索确认可用网址,下面的github链接是比较全面的docker源网址汇总,可以在这内里找。 https://github.com/dongyubin/DockerHub
3. 应用更改并重启docker

  1. sudo systemctl daemon-reload #重载systemd管理守护进程配置文件
  2. sudo systemctl restart docker #重启 Docker 服务
复制代码
4.重新测试

  1. docker run hello-world
复制代码
得到如下结果,大功告成!!!


三、构建docker存储空间不足

运行完上述测试后在docker build xxx的时候报错:InvalidArchiveError,No space left on device,提示存储空间不足
首先检查磁盘空间使用情况
  1. df -h
复制代码
得到如下结果:

docker默认情况下会占用根分区的存储空间,也就是上图/dev/nvme0n1p10,显示剩余8.9G,空间不足,两种办理方法。
1. 清算Docker 镜像和容器

  1. docker system prune -a  # 删除所有未使用的镜像、悬挂的卷和停止的容器
复制代码
2. 将 Docker 存储目次移动到 /home 分区

编辑/etc/docker/daemon.json文件,添加如下内容:
  1. {
  2.   "data-root": "/home/docker-data"
  3. }
复制代码
终极该文件内容如下:
  1. {
  2. "registry-mirrors": [ "https://dockerpull.com" ] ,
  3. "data-root": "/home/docker-data"
  4. }
复制代码
像第二部分1~3步一样保存更改并重启docker,再重新构建你所需的docker
  1. docker bulid xxx
复制代码

四、运行容器

1. 查看刚刚构建好的docker 镜像

  1. docker images
复制代码
得到结果如下体现构建成功:

2. 用构建的镜像来启动一个新的容器

  1. docker run --gpus all -it -v /home/cslearner/PycharmProjects/tdmpc2-main:/app cslearner/tdmpc2:1.0.0 /bin/bash  
  2. # 将cslearner/tdmpc2:1.0.0 替换成你的镜像名+TAG
复制代码
/home/PycharmProjects/tdmpc2-main:/app体现将主机上/home/PycharmProjects/tdmpc2-main目次的内容挂载到容器/app 目次
不消GPU的话可以将--gpus all去掉,还有就是/bin/bash体现进入容器的交互式终端,可以执行下令及脚本文件。
但是这步加了gpu之后报错了,如下:
  1. docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]].
复制代码
原因是没装NVIDIA Container Toolkit

  1. distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
  2. curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
  3. curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
复制代码
执行上述指令后在终端看到下图,是/etc/apt/sources.list.d/nvidia-docker.list文件中的内容,但是这里生成的网址有些已经弃用了,以是需要修改

打开文件
  1. sudo nano /etc/apt/sources.list.d/nvidia-docker.list
复制代码
修改文件内容如下:
  1. deb https://nvidia.github.io/libnvidia-container/stable/deb/$(ARCH) /
  2. #deb https://nvidia.github.io/libnvidia-container/experimental/deb/$(ARCH) /
复制代码
之后再
  1. sudo apt-get update
复制代码
我在sudo apt-get update
之后发现还有错误,一个是W: 目标 CNF (stable/cnf/Commands-all) 在 /etc/apt/sources.list:58 和 /etc/apt/sources.list.d/docker.list:1 中被配置了多次,我首先是把sources.list文件内里和docker.list重复的部分注释掉了,然后把docker.list内里的源也换掉,如下:
  1. deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu focal stable
复制代码
之后又报错http://security.ubuntu.com/ubuntu/dists/focal-security/InRelease 连接失败 [IP: 185.125.190.83 80],我再次打开sources.list,把http://security.ubuntu.com/ubuntu全删除了,更换成国内源如下:
  1. deb http://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted
  2. deb http://mirrors.ustc.edu.cn/ubuntu/ focal-security universe
  3. deb http://mirrors.ustc.edu.cn/ubuntu/ focal-security multiverse
复制代码
这个时候再重启一下docker
  1. sudo systemctl restart docker
  2. docker run --gpus all -it <user>/tdmpc2:1.0.0 /bin/bash
复制代码
看到下图,成功!此中root@背面的一串15d32f77ff51是容器的ID

3. 检查待执行脚本所需的情况是否安装好(python)

  1. python --version
  2. conda list
复制代码
输入conda list 之后又得到报错:Error while loading conda entry point: conda-libmamba-solver (libarchive.so.19: cannot open shared object file: No such file or directory),原因是conda 缺少了依赖库libarchive.so.19,在docker中执行以下下令来安装:
  1. apt-get update
  2. apt-get install -y libarchive-dev
复制代码
再次出现W: Failed to fetch ,需要换源,在docker中打开/etc/apt/sources.list文件,删除全部,然后更换成:
  1. deb http://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse
  2. deb http://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
  3. deb http://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
  4. deb http://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse
复制代码
再重新执行上面的安装libarchive的下令,成功后输入conda list 查看是否还有错误
4. 运行脚本

  1. python /app/script.py
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4