【docker】拉镜像踩坑记录

代理配置

在使用 Docker 拉取镜像时,可以通过以下几种方式设置代理:

  1. 在 Docker 配置文件中设置代理:

    • 创建或编辑 /etc/systemd/system/docker.service.d/http-proxy.conf 文件(如果目录不存在,请先创建)。
    • 在文件中添加以下内容:
      [Service]
      Environment="HTTP_PROXY=http://proxy.example.com:8080"
      Environment="HTTPS_PROXY=https://proxy.example.com:8443"
      
    • proxy.example.com 替换为实际的代理服务器地址,将 80808443 替换为实际的代理端口。
    • 保存文件并重启 Docker 服务:
      sudo systemctl daemon-reload 
      sudo systemctl restart docker 
      
  2. 在 Docker 命令中临时设置代理:

    • 在拉取镜像时,可以使用 -e 参数临时设置代理环境变量:
      docker pull -e HTTP_PROXY=http://proxy.example.com:8080 -e HTTPS_PROXY=https://proxy.example.com:8443 image:tag
      
      
    • proxy.example.com 替换为实际的代理服务器地址,将 80808443 替换为实际的代理端口。
  3. 设置系统级代理:

    • 如果你的系统已经设置了全局代理,Docker 会自动使用系统代理设置。
    • 可以通过设置 HTTP_PROXYHTTPS_PROXY 环境变量来配置系统代理。

需要注意的是,代理设置可能因网络环境和代理服务器的具体配置而有所不同。请根据实际情况进行相应的调整。

另外,如果你使用的是 Docker Desktop for Windows 或 Docker Desktop for Mac,可以在应用程序的设置或首选项中直接配置代理。

docker权限配置

报错:

permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/create?fromImage=xxx": dial unix /var/run/docker.sock: connect: permission denied

根据错误信息,可以判断是在使用 docker pull 命令拉取镜像时遇到了权限问题。错误信息表明你没有访问 Docker 守护进程的权限。

要解决这个问题,可以尝试以下几种方法:

  1. 使用 sudo 命令:

    • 在命令前添加 sudo,以提升权限运行 Docker 命令:
      sudo docker pull xxxxxx/xxxxxxx
      
    • 输入你的用户密码进行确认。
  2. 将当前用户添加到 docker 用户组:

    • 运行以下命令将当前用户添加到 docker 用户组:
      sudo usermod -aG docker $USER      
      
    • 注销并重新登录,或者运行以下命令刷新用户组membership:
      newgrp docker      
      
    • 之后,你应该可以直接运行 docker 命令而无需使用 sudo
  3. 修改 Docker 守护进程的 Unix 套接字权限:

    • 运行以下命令修改 /var/run/docker.sock 的权限:
      sudo chmod 666 /var/run/docker.sock      
      
    • 请注意,这种方法虽然可以解决权限问题,但会降低安全性,因为它允许任何用户访问 Docker 守护进程。

建议优先尝试使用 sudo 命令或将用户添加到 docker 用户组的方法。如果这些方法无法解决问题,再考虑修改 Docker 套接字的权限。

拉取镜像时显示细节

如果你想在拉取镜像时显示更多详细信息,可以使用 docker pull 命令的 --progress 选项。--progress 选项可以设置为 plainauto,默认为 auto

  1. 使用 --progress=plain 选项:

    docker pull --progress=plain aaronmck/single_cell_gestalt:latest
    

    使用 plain 选项会显示拉取镜像的详细信息,包括每个层的下载进度、已下载的数据量和总数据量等。输出格式为纯文本,适合在终端中查看。

  2. 使用 --progress=auto 选项(默认):

    docker pull --progress=auto aaronmck/single_cell_gestalt:latest
    

    使用 auto 选项会根据终端的宽度自动调整输出格式。如果终端宽度足够,它会显示一个进度条和百分比;如果终端宽度较窄,它会切换到简化的输出格式,类似于 plain 选项的输出。

除了使用 --progress 选项外,你还可以使用 --verbose-v 选项来显示更详细的调试信息:

docker pull --verbose aaronmck/single_cell_gestalt:latest

使用 --verbose 选项会显示更多与镜像拉取过程相关的调试信息,包括 HTTP 请求和响应的详细信息。

请注意,使用这些选项会产生更详细的输出,可能会占用更多的终端空间。你可以根据自己的需求选择合适的选项。

配置了代理还是报错

具体报错信息:

error pulling image configuration: download failed after attempts=6: read tcp 192.168.50.86:39684->xxx: read: connection reset by peer

根据错误信息,在拉取镜像配置时发生了错误。错误信息表明在多次尝试后,下载失败了,并且在读取数据时连接被对等方重置。

这个错误通常表示网络连接问题或者与 Docker 镜像仓库的通信问题。以下是一些可能的解决方案:

  1. 检查网络连接:

    • 确保你的网络连接稳定且可以访问互联网。
    • 尝试 ping 一个公共网站,如 google.com,以验证网络连接是否正常。
  2. 检查 Docker 守护进程的网络设置:

    • 确保 Docker 守护进程可以访问互联网。
    • 检查 Docker 守护进程的代理设置是否正确。如果你在之前的问题中设置了代理,请确保代理服务器可以正常工作。
  3. 尝试使用不同的镜像仓库:

    • 如果你使用的是 Docker Hub,可以尝试切换到其他镜像仓库,如 Google Container Registry 或 Quay.io。

    • 你也可以尝试使用本地镜像仓库,如果你有的话。

  4. 重试拉取镜像:

    • 有时,网络问题或服务器端的问题可能是暂时的。你可以等待一段时间后再次尝试拉取镜像。
    • 可以使用 docker pull --retry 选项指定重试次数,例如:
      docker pull --retry 3 xxx  
      
  5. 检查 Docker 日志:

    • 查看 Docker 日志以获取更多关于错误的详细信息。
    • 可以使用以下命令查看 Docker 日志:
      sudo journalctl -u docker.service  
      

如果以上建议都无法解决问题,可能需要进一步排查网络连接或者与镜像仓库的通信问题。你可以尝试在其他计算机或网络环境中拉取镜像,以确定问题是否与特定环境相关。

查看日志显示白名单错误

查看日志:

sudo journalctl -u docker.service  

发现在上文的retry上面有这样的报错:

Attempting next endpoint for pull after error: denied: 🚫 这镜像不在白名单. this image is not in the allowlist.

具体解决办法:

docker pull xxx --disable-content-trust=false        

DONE

  • 21
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值