docker 在hub服务器上登录时提示 error storing credentials 、启动使用gpu的容器 等问题解决方法

avatar
作者
猴君
阅读量:3

一、docker 在hub服务器上登录时提示Error saving credentials: error storing credentials

1. 问题发生过程

   向docker官网推送镜像包之前先到https://hub.docker.com/进行注册,在服务器上准备好镜像之后使用docker login登录。

root@testMC:/home/# docker login Username: you username Password: passwd 

    在服务器上登录docker输入账号密码后提示报错:

Error saving credentials: error storing credentials - err: exit status 1, out: `Cannot autolaunch D-Bus without X11 $DISPLAY`。

    按提示的意思是无法存储信用凭证。

2. 问题解决办法

    网上有多种方法,比如切到.docker目录等都不好使,在stackoverflow.com 上的一个评论里找到一个可行的办法。地址:https://stackoverflow.com/questions/42787779/docker-login-error-storing-credentials-write-permissions-error

解决办法:Install the following packages to solve this issue.

root@testMC:/home/# apt install gnupg2 pass

    GnuPG是GNU Privacy Guard的缩写,它是一个完全开源自由的OpenPGP标准(由RFC4880定义)实现。pass 是 Linux上的一个简单的命令行密码管理器,它将密码存储在一个gpg加密后的文件里。这些加密后的文件很好地组织按目录结构存放。

登录成功后会提示密钥凭证存储在如下位置, 可以进行配置关闭这个提示。

WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

    向docker官网推送镜像包之前需要将本地docker镜像名修改为你在为docker官方注册的用户名,因为官方镜像仓库是以用户名来命名仓库的。

    你上传只能传到你自己仓库里。如果命名不对会上传的话会得到报错denied: requested access to the resource is denied,即权限被拒绝。

    然后执行docker push命令即可。docker添加tag使用docker tag命令,如果要删除某个镜像的tag,使用docker rmi -f如下:

root@testMC:/home/# docker tag fastapi-gunicorn-server:v1.0 kermitcode/fastapi-gunicorn-server:v1.0
root@testMC:/home/# docker push kermitcode/fastapi-gunicorn-server:v1.0
#删除tag
root@testMC:/home/# docker rmi -f kermitcode/fastapi-gunicorn-server:v1.0

二、在ubuntu的docker容器中出现报错404  Not Found

  另一个小问题。是关于Docker容器:在ubuntu的docker容器中使用apt install python-pip 安装PIP的时候出现报错404  Not Found [IP: 91.189.91.39 80]。使用apt-get update命令更新源时,也出现了上述的无法下载的错误。

    但是,并不是所有的软件都无法更新,而是剩下的一部分无法更新。最后运行了如下命令解决了。

#检查是否有损坏的依赖
apt-get check
#更新已安装的包
apt-get upgrade 

三、Docker启动使用gpu的容器could not select with capabilities: [[gpu]].

    docker启动使用gpu的容器提示报错:docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]].

    我这里的服务器系统是Ubuntu18.04,问题是出在未安装nvidia-container-toolkit或nvidia-container-runtime(它包含nvidia-container-toolkit)。安装nvidia-container-toolkit需要添加nvidia-docker源,操作如下:

root@testMC:~/# distribution=$(. /etc/os-release;echo $ID$VERSION_ID) root@testMC:~/# curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add OK root@testMC:~/# curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list  root@testMC:~/# apt-get update root@testMC:~/# apt-get install nvidia-container-toolkit #gpus选项提示 root@testMC:~/# $ docker run --help | grep -i gpus       --gpus gpu-request               GPU devices to add to the container ('all' to pass all GPUs) #安装好后可通过如下命令(两个之一都可以)在官方CUDA镜像上测试nvidia-smi root@testMC:~/# docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi root@testMC:~/# docker run --gpus all --rm nvidia/cuda nvidia-smi Status: Downloaded newer image for nvidia/cuda:latest

     安装好后通过上面任一命令在官方CUDA镜像上测试nvidia-smi,镜像启动成功并能正常显示GPU信息。可以指定使用几块GPU或指定使用哪块GPU进行工作。

#启动支持两块GPU的容器
$ sudo docker run –gpus 2 nvidia/cuda nvidia-smi
#指定某块GPU运行容器
$ sudo docker run –gpus device=0 nvidia/cuda nvidia-smi

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!