前几天在使用docker pull命令的时候报错,找了很多方法都没成功。后面发现只是公司把那个网址屏蔽了,难过~
一、问题定位
网上的教程都说,docker pull命令报错是因为没有设置一个国内的docker镜像源。而且我也确实试过那台电脑能ping通目标网站,所以没往网络不通这方面想。
查看当前的docker镜像源:docker info|grep Mirrors -A 1
二、更换docker镜像源
于是我掌握了好几家的docker镜像源设置,具体如下:
1、阿里【需要登录】
2、daocloud【需要登录】
Linux系统设置的可选方法一:curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
但是问题上我的电脑网被禁了,连set_mirror.sh这个脚本也下载不下来。所以还是按前面的方法手动去/etc/docker/daemon.json文件中进行编辑。
Linux系统设置的可选方法二:sudo vim /etc/docker/daemon.json,并在该文件的registry-mirrors键下加入值http://f1361db2.m.daocloud.io。不同地区的网址可能有区别。
{"registry-mirrors":["http://f1361db2.m.daocloud.io"]}
3、以及在网上看到的其他换源教程
vi /etc/docker/daemon.json{"registry-mirrors": ["https://no1pfk8z.mirror.aliyuncs.com","https://kfwkfulq.mirror.aliyuncs.com","https://2lqq34jg.mirror.aliyuncs.com","https://pee6w651.mirror.aliyuncs.com","https://hub-mirror.c.163.com/","https://reg-mirror.qiniu.com"]}
重启:
sudo systemctl daemon-reloadsudo systemctl restart docker
重启之后再用docker info|grep Mirrors -A 1命令查看镜像设置是否成功。
三、用笨办法解决
最后发现是网络问题就死心了,那么如何能够通过其他方法达到下载目标镜像的目的呢?
我一开始在网上查询 docker pull的文件路径,结果查了一圈下来人都看懵了。虽然确实跟着教程找到了xx文件夹下的xx镜像文件的哈希256值,但是根本没办法对应到具体的文件夹(镜像文件是被分别存放在多个文件夹下的)。且不进一步说如何能把目标镜像文件夹转移到目标电脑上之后,如何更新对应的xx.json文件了。
后面转念一想,在官网查到了能满足要求的docker save命令。通过在其他电脑上pull docker镜像之后,将其保存至本地文件夹,再转到目标电脑上并load为镜像文件。具体操作为:
1、docker pull xx 2、docker save 镜像ID > 本地路径下的目标文件,该文件以.tar 后缀结尾 3、将前一步保存下来的xx文件放到目标电脑上 4、docker load < 本地路径下以.tar结尾的源文件,此时可以看到一个没有tag的新镜像 5、docker tag 镜像名称:版本号 6、docker run xx, 基于该镜像生成一个新的容器
其他问题:
附一个docker: Error response from daemon: Unknown runtime specified nvidia.问题解决方法。
方法一: sudo apt install -y nvidia-docker2 sudo systemctl daemon-reload sudo systemctl restart docker 方法二:用
--gpus all代替--runtime=nvidia。 方法三 :sudo pkill -SIGHUP dockerd
问题Couldn't find libnvidia-ml.so library in your system。我出现这个问题是因为修改并重命名了daemon.json文件的其他地方(和换源不冲突),改回来即可。
NOTE:当我们需要对docker服务进行调整配置时,不用去修改主文件 docker.service的参数,通过daemon.json配置文件来管理,更为安全、合理。(转自网络)
参考文件:
1、https://www.jianshu.com/p/729d755ace65
2、官网 https://github.com/NVIDIA/nvidia-docker/wiki/Frequently-Asked-Questions#why-do-i-get-the-error-unknown-runtime-specified-nvidia
