我是新手Docker
,并且使用 的经验有限Linux
。尝试启动GIT
项目(托管在 Github 上的机器学习项目)。该项目使用 GPU (Nvidia) 并依赖于Docker
和 ,nvidia-docker2
并以Python (3.5)
.
继自述文件.md我成功地继续,直到安装时出现错误nvidia-docker2
。 (自述文件的第一部分(包括安装)nvidia-docker2
位于上面的链接中)。
为了详细说明一下,README.md 文件有一个关于如何运行项目的分步安装指南,它从安装 nvidia 驱动程序和其他库开始,我可以安装这些库并验证它们是否正常工作。但在安装时nvidia-docker2
:
sudo apt-get install -y nvidia-docker2
我收到以下错误:
The following packages have unmet dependencies:
nvidia-docker2 : Depends: docker-ce (= 18.03.1~ce~3-0~ubuntu) but
18.05.0~ce~3-0~ubuntu is to be installed or
docker-ee (= 18.03.1~ee~3-0~ubuntu) but it is not
欢迎任何帮助评论!请参阅下面的一些其他详细说明,在帖子的末尾,我描述了我解决此问题的一些尝试。
谢谢!
一些阐述:
我到达了必须安装 docker 的部分并且进展顺利(引用自自述文件.md)我跑:
sudo apt-get update
sudo apt-get remove docker docker-engine docker.io
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install docker-ce
sudo docker run hello-world
sudo usermod -a -G docker $USER
它工作正常,我可以验证:
sudo apt-get install -y nvidia-docker2
所以当我检查时
sudo docker version
我得到了我拥有的 Bionic ubuntu 的最新 docker。
Client:
Version: 18.05.0-ce
API version: 1.37
Go version: go1.9.5
Git commit: f150324
Built: Wed May 9 22:16:13 2018
OS/Arch: linux/amd64
Experimental: false
Orchestrator: swarm
Server:
Engine:
Version: 18.05.0-ce
API version: 1.37 (minimum version 1.12)
Go version: go1.9.5
Git commit: f150324
Built: Wed May 9 22:14:23 2018
OS/Arch: linux/amd64
Experimental: false
然后我可以检查 docker 是否已设置并且可以运行:
sudo docker run hello-world
所以我得到:
Hello from Docker!
[...]
但是,当我继续执行 README.md 上必须安装的下一个指令块时,nvidia-docker2
出现错误:
我跑
docker volume ls -q -f driver=nvidia-docker | xargs -r -I{} -n1 docker ps -q -a -f volume={} | xargs -r docker rm -f
sudo apt-get purge -y nvidia-docker
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-
docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update
最后:
sudo apt-get install -y nvidia-docker2
出现错误:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
nvidia-docker2 : Depends: docker-ce (= 18.03.1~ce~3-0~ubuntu) but 18.05.0~ce~3-0~ubuntu is to be installed or
docker-ee (= 18.03.1~ee~3-0~ubuntu) but it is not installable
E: Unable to correct problems, you have held broken packages.
我试图解决这个问题:
- 我用谷歌搜索了我的问题并找到了这个票在 nvidia-github 上。票证已关闭,但是(可能是由于缺乏 Linux 经验)我可以理解他们的真正意思——Ubuntu18.04
nvidia-docker2
根本不支持吗? - 一样的票,最后一篇文章由摇滚乐建议安装
docker.io
而不是安装docker-ce
,这应该可以解决nvidia-docekr2
问题。我遵循他的建议,即安装docker.io
(我也/etc/apt/sources.list
按照 rockper 的建议进行编辑)。然后我可以验证我是否已成功安装docker.io
,即:
。
sudo docker version
Client:
Version: 17.12.1-ce
API version: 1.35
Go version: go1.10.1
Git commit: 7390fc6
Built: Wed Apr 18 01:23:11 2018
OS/Arch: linux/amd64
Server:
Engine:
Version: 17.12.1-ce
API version: 1.35 (minimum version 1.12)
Go version: go1.10.1
Git commit: 7390fc6
Built: Wed Feb 28 17:46:05 2018
OS/Arch: linux/amd64
Experimental: false
哪个是最新的 docker.io
ubuntu 上的包。但我仍然收到错误(尽管报告有点不同)
sudo apt-get install -y nvidia-docker2
The following packages have unmet dependencies:
nvidia-docker2 : Depends: docker-ce (= 18.03.1~ce~3-0~ubuntu) but it is not
going to be installed or
docker-ee (= 18.03.1~ee~3-0~ubuntu) but it is not installable
E: Unable to correct problems, you have held broken packages.
答案1
我通过安装特定的 docker-ce (社区版)包而不是最新的(版本 18.05)解决了这个问题
sudo apt-get install -y docker-ce=18.03.13-0~ubuntu
安装 docker-ce 的完整说明可以在以下位置找到:https://docs.docker.com/install/linux/docker-ce/ubuntu/